active_admin 中的嵌套表单,带有选择或创建选项

ruby

1个回答

写回答

48556

2025-07-01 06:45

+ 关注

Ruby
Ruby

使用 ActiveAdmin 创建嵌套表单与选择或创建选项

在使用 ActiveAdmin 构建管理界面时,有时我们需要处理嵌套表单,并提供用户选择或创建选项的功能。这在管理复杂数据关系时非常有用。本文将向您展示如何实现这一功能,并提供一个示例代码以帮助您入门。

为什么需要嵌套表单与选择或创建选项?

嵌套表单是一种在 ActiveAdmin 中创建和编辑相关模型之间关系的方法。有时,我们需要一个字段,允许用户选择一个现有的关联记录,或者创建一个新的关联记录。这在处理父子关系、标签、分类等方面非常有用。

使用 f.inputs 和 f.has_many 创建嵌套表单

在 ActiveAdmin 中,您可以使用 f.inputs 和 f.has_many 方法创建嵌套表单。以下是一个示例:

Ruby

ActiveAdmin.register Article do

form do |f|

f.inputs "文章信息" do

f.input :title

f.input :content

end

f.inputs "标签" do

f.has_many :article_tags do |tag_form|

tag_form.input :tag, as: :select, collection: Tag.all.map { |t| [t.name, t.id] }, include_blank: "选择或创建标签"

end

end

f.actions

end

end

在上面的示例中,我们使用 f.has_many 创建了一个嵌套表单,用于关联文章和标签。我们使用 as: :select 来创建一个下拉选择框,允许用户选择现有的标签,还设置了一个 include_blank 选项,用于显示一个默认的“选择或创建标签”选项。

示例代码解析

- ActiveAdmin.register Article:我们在 ActiveAdmin 中注册了一个名为 "Article" 的模型。

- f.inputs:这个方法用于创建表单输入字段组。

- f.has_many:用于创建嵌套表单。在这里,我们将文章与标签的关系嵌套到了文章表单中。

- tag_form.input :tag:这里我们创建了一个输入字段,允许用户选择或创建标签。

- collection: Tag.all.map { |t| [t.name, t.id] }:这个选项为下拉选择框提供了标签的选项,以及它们的值。

- include_blank: "选择或创建标签":这个选项将一个默认的选项添加到下拉选择框中,以便用户可以选择或创建标签。

使用 ActiveAdmin,您可以轻松地创建嵌套表单,并为用户提供选择或创建选项的功能。这对于管理复杂数据关系非常有用,如文章和标签之间的关联。希望本文对您有所帮助,让您更好地利用 ActiveAdmin 构建强大的管理界面。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号