我有2个activeadmin资源,都是使用STI的模型的子类。例如:
base_model.rb
class BaseModel < ActiveRecord::Base
end
male_model.rb
class MaleModel < BaseModel
end
female_model.rb
class FemaleModel < BaseModel
end
管理员/ male_model.rb
ActiveAdmin.register MaleModel do
menu :parent => "Models", :label => "Male Model"
# A big long custom form follows...
form do |f|
f.inputs
f.buttons
end
end
管理员/ female_model.rb
ActiveAdmin.register FemaleModel do
menu :parent => "Models", :label => "Female Model"
# The SAME big long custom form follows...
form do |f|
f.inputs
f.buttons
end
end
呈现相同表单的正确方法是什么,但是创建一个不同子类的记录,MaleModel或FemaleModel?
我现在正在做的是维护2个activeadmin资源,其中包含几乎完全相同(庞大)的代码。完全解开。请分享你在这种情况下所做的一切。
约翰
答案 0 :(得分:1)
我没试过这个,但你可以在控制器中定义一个@object
变量:
controller do
before_filter :set_object, :only => [:new, :edit]
....
def set_object
@object = MaleModel.find(params[:id]) rescue MaleModel.new
end
end
然后您可以渲染表单并使用变量@object
代替@male_model
或@female_model
。
form :partial => "models/form"
# app/views/models/_form.html.erb
<%= semantic_form_for [:admin, @object] do |f| %>
<%= f.inputs %>
<%= f.actions %>
<% end %>