【问题标题】:How to map names of an input in an activeadmin?如何在 activeadmin 中映射输入的名称?
【发布时间】:2019-02-19 11:59:09
【问题描述】:

我有一个 Tag 模型作为多态表,我在 Account 和 Activity 两个模型上使用它。在活动管理表单中选择帐户和活动时,我想用它们的名称替换它们。

当帐户或活动显示为实例时,该表单正在工作。但是当我尝试用他们的名字替换它们时(见下面的代码),我在表单中收到错误“必须存在并且不能为空”。我浏览了 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 的东西,它可以让我用他们的名字而不是实例来显示账户和活动,这根本不是用户友好的,但仍然将它们保存为实例而不会出现上述错误。

非常感谢任何帮助,谢谢:)

【问题讨论】:

    标签: ruby-on-rails nested activeadmin polymorphic-associations


    【解决方案1】:

    您需要将 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] }
    

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 2015-06-25
      • 1970-01-01
      • 2021-08-19
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多