簡體   English   中英

Rails ActiveAdmin注冊,包裝另一個資源

[英]Rails ActiveAdmin register, wrapping another resource

我有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資源,並且其中的代碼幾乎完全相同(龐大)。 完全未干燥。 請分享您在這種情況下所做的事情。

約翰

我沒有嘗試過,但是您可以在控制器中定義一個@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 %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM