Ruby on rails 活动管理:同一类的两个对象的两个嵌套表单

Ruby on rails 活动管理:同一类的两个对象的两个嵌套表单,ruby-on-rails,forms,activeadmin,nested-forms,Ruby On Rails,Forms,Activeadmin,Nested Forms,我有一个这样的模型: class MyModel < ActiveRecord::Base belongs_to :some_relation1 belongs_to :some_relation2 # Same class as some_relation1 end f.inputs 'Test 1' do f.semantic_fields_for(f.object.some_relation1 || f.object.build_some_relation1) do

我有一个这样的模型:

class MyModel < ActiveRecord::Base
  belongs_to :some_relation1
  belongs_to :some_relation2  # Same class as some_relation1
end
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_relation1
some_relation2
的输入将以类和冲突结束

此时,我试图为
一些关系2
创建一个特殊的类,该类继承了以前的类,以便ActiveAdmin生成唯一的HTML类。 这是可行的,但现在我在提交表单时出现以下错误:

SomeClass2(#70117816523800) expected, got ActionController::Parameters(#70117783961220)
我在这里不知所措。
有人知道正确的方法吗,或者知道一个将此功能添加到ActiveAdmin的猴子补丁吗?

首先,我的目的是分享一些在active admin上可用的东西,这些东西可能适用于您的情况。但由于我对你的问题不是很有信心,你能回顾一下我的答案并告诉我这是否有帮助吗

ActiveAdmin.register Post do

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\u nested\u属性,以便接受。

在您的帖子示例中,帖子将有两个属于关系。我想要的是为这些关系显示两个嵌套表单(它们都“链接”到同一类型的记录)。所以我不想在这里使用
has\u many
,除非它是唯一的解决方案,因为它似乎不适合。在这种情况下,有一个解决方案!您可以更改表单名称,并且可以通过模型和控制器进行处理。下面的事情应该可以做到:您只需管理在模型/控制器中获取这些数据即可f、 has_many:some_relation_one,:allow_destroy=>true,as::uniq_name,:heading=>Themes,:new_record=>false do | cf | `首选方法是在模型中处理这些内容。所以你的主动管理控制器不会制造麻烦,你也不需要覆盖它们。谢谢,我会试试这个,然后给你回复。