我有一個模型,看起來像這樣:主動管理:對同一類的兩個對象兩個嵌套形式
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_relation1
和some_relation2
的投入將結束與類和衝突。
在這一點上,我試圖爲some_relation2
做一個特殊的類,它繼承了它的前一個類,以便ActiveAdmin生成唯一的HTML類。 這工作,但現在我得到提交表單時,這個錯誤:
SomeClass2(#70117816523800) expected, got ActionController::Parameters(#70117783961220)
我不知所措就在這裏。 有沒有人知道正確的方法來做到這一點,或者一個猴子補丁將此功能添加到ActiveAdmin?
在您的Post示例中,Post將有兩個belongs_to關係。我想要的是顯示這些關係的兩個嵌套窗體(這兩個「鏈接」到相同類型的記錄)。所以我不想在這裏使用'has_many',除非它是唯一的解決方案,因爲它似乎不適合。 – 2014-11-25 15:19:56
在那種情況下是有解決方案的!您可以更改表單名稱,並可以通過模型和控制器進行處理。 – Rubyrider 2014-11-25 15:21:19
以下事情應該可以工作:您只需要管理在模型/控制器中獲取這些數據。 'f.has_many:some_relation_one,:allow_destroy => true,如::uniq_name,:heading =>'Themes',::new_record => false do | cf |' – Rubyrider 2014-11-25 15:22:25