如何在 activeadmin 中映射输入的名称?
How to map names of an input in an activeadmin?
我有一个 Tag 模型作为多态 table,我在两个模型 Account 和 Activity 上使用。在活动管理表单中选择帐户和 activity 时,我想用他们的名字替换它们。
当帐户或活动显示为实例时,该表单有效。但是当我尝试用他们的名字替换它们时(见下面的代码),我在表单中收到错误 "must exist and can't be blank"。我浏览了 ActiveAdmin 的文档,但找不到我的答案。
ActiveAdmin.register Tag do
# belongs_to :spot
permit_params :name, :taggable_type, :taggable_id
form do |f|
f.semantic_errors
f.inputs do
f.input :name,
collection: Tag::TAG_NAMES
f.input :taggable_type,
collection: Tag::TAGGABLE_TYPES
f.input :taggable, label: "Account / Activity",
collection: Account.all.map { |a| a.nickname } +
Activity.all.map { |act| act.name }
end
f.actions
end
end
我想要像 label_method 和 value_method 这样的东西,它们可以让我用名称而不是实例来显示帐户和活动,这对用户来说一点都不友好,但仍然将它们保存为实例而不会出现上述错误。
非常感谢任何帮助,谢谢:)
您需要将 id 作为选项值传递。尝试
f.input :taggable_id, label: "Account / Activity",
collection: Account.all.map { |a| [a.nickname, a.id] } +
Activity.all.map { |act| [act.name, act.id] }
我有一个 Tag 模型作为多态 table,我在两个模型 Account 和 Activity 上使用。在活动管理表单中选择帐户和 activity 时,我想用他们的名字替换它们。
当帐户或活动显示为实例时,该表单有效。但是当我尝试用他们的名字替换它们时(见下面的代码),我在表单中收到错误 "must exist and can't be blank"。我浏览了 ActiveAdmin 的文档,但找不到我的答案。
ActiveAdmin.register Tag do
# belongs_to :spot
permit_params :name, :taggable_type, :taggable_id
form do |f|
f.semantic_errors
f.inputs do
f.input :name,
collection: Tag::TAG_NAMES
f.input :taggable_type,
collection: Tag::TAGGABLE_TYPES
f.input :taggable, label: "Account / Activity",
collection: Account.all.map { |a| a.nickname } +
Activity.all.map { |act| act.name }
end
f.actions
end
end
我想要像 label_method 和 value_method 这样的东西,它们可以让我用名称而不是实例来显示帐户和活动,这对用户来说一点都不友好,但仍然将它们保存为实例而不会出现上述错误。
非常感谢任何帮助,谢谢:)
您需要将 id 作为选项值传递。尝试
f.input :taggable_id, label: "Account / Activity",
collection: Account.all.map { |a| [a.nickname, a.id] } +
Activity.all.map { |act| [act.name, act.id] }