【问题标题】:Active Admin: two nested forms for two objects of the same classActive Admin:同一类的两个对象的两个嵌套表单
【发布时间】:2014-11-25 14:54:05
【问题描述】:

我有一个看起来像这样的模型:

class MyModel < ActiveRecord::Base
  belongs_to :some_relation1
  belongs_to :some_relation2  # Same class as some_relation1
end

MyModel ActiveAdmin 表单页面中,我想显示两个内部表单:一个用于some_relation1,一个用于some_relation2

我是这样做的:

f.inputs 'Test 1' do
  f.semantic_fields_for(f.object.some_relation1 || f.object.build_some_relation1) do |inner_f|
    inner_f.inputs '' do
      # Some inputs
    end
  end
end

f.inputs 'Test 1' do
  f.semantic_fields_for(f.object.some_relation2 || f.object.build_some_relation2) do |inner_f|
    inner_f.inputs '' do
      # Some inputs
    end
  end
end

我遇到的第一个问题是 ActiveAdmin 似乎是根据底层对象的类生成 HTML 输入类,因此 some_relation1some_relation2 的输入最终会与类发生冲突。

此时我尝试为some_relation2 创建一个特殊的类,它继承了之前的类,以便ActiveAdmin 生成唯一的HTML 类。 这可行,但现在提交表单时出现此错误:

SomeClass2(#70117816523800) expected, got ActionController::Parameters(#70117783961220)

我在这里不知所措。 有谁知道执行此操作的正确方法,或将此功能添加到 ActiveAdmin 的猴子补丁?

【问题讨论】:

    标签: ruby-on-rails forms activeadmin nested-forms


    【解决方案1】:

    首先,我的目的是分享一些在活动管理员上可用的东西,这可能适用于你的情况。但是由于我对您的问题不太有信心,请您查看我的回答并告诉我这是否有帮助?

    ActiveAdmin.register 发布后做

    form do |f|
      .......
      f.inputs do
        f.has_many :some_relation_one, :allow_destroy => true, as: :uniq_name ,:heading => 'Themes', :new_record => false do |cf|
          cf.input :title
        end
      end
      f.actions
     end
    end
    

    另外,请确保在要接受的所需模型中添加 accept_nested_attributes_for :some_relation_ship。

    【讨论】:

    • 在您的 Post 示例中,Post 将有两个 belongs_to 关系。我想要为这些关系显示两个嵌套形式(它们都“链接”到相同类型的记录)。所以我不想在这里使用has_many,除非它是唯一的解决方案,因为它似乎不适合。
    • 在这种情况下有一个解决方案!您可以更改表单名称,并且可以通过模型和控制器进行处理。
    • 以下事情应该可以工作:您只需要管理在模型/控制器中获取这些数据。 ` f.has_many :some_relation_one, :allow_destroy => true, as: :uniq_name ,:heading => 'Themes', :new_record => false do |cf|`
    • 首选方法是在模型中处理这些东西。这样您的活动管理员控制器就不会造成麻烦,您也不需要覆盖它们。
    • 谢谢,我会试试这个并回复你。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    相关资源
    最近更新 更多