2012-02-05 13 views
10

मैं रेल के साथ ActiveAdmin (0.4.0) का उपयोग कर रहा हूँ (3.1.1)।ActiveAdmin में एकाधिक नेस्टेड संसाधनों को कैसे संभालें?

मुझे कई नेस्टेड संसाधनों को संभालने के लिए एक अच्छा तरीका/हैक नहीं मिल रहा है।

Considerer 3 मॉडल के रूप में:

class Program < ActiveRecord::Base 
    has_many :knowledges, :dependent => :destroy 
end 

class Knowledge < ActiveRecord::Base 
    belongs_to :program 
    has_many :steps, :dependent => :destroy 
end 

class Step < ActiveRecord::Base 
    belongs_to :knowledge 
end 

और ActiveAdmin संसाधन:

ActiveAdmin.register Program do 
end 

ActiveAdmin.register Knowledge do 
    belongs_to :program 
end 

ActiveAdmin.register Step do 
    belongs_to :knowledge 
end 

routes.rb में:

namespace :admin do 
    resources :programs do 
    resources :knowledges do 
     resources :steps 
    end 
    end 
end 

यहाँ कार्यक्रमों के सूचकांक के लिए यूआरएल है, जानकारियों और चरणों:
http://localhost:3000/admin/programs
http://localhost:3000/admin/programs/1/knowledges
http://localhost:3000/admin/programs/1/knowledges/1/steps

"ज्ञान" व्यवस्थापक लेकिन "चरण" व्यवस्थापक नेस्टेड संदर्भ नहीं रखते के लिए कोई समस्या नहीं है।

उदाहरण के लिए, मैं के लिए पुनः निर्देशित कर रहा हूँ जब मैं चरणों # सूचकांक में फिल्टर का उपयोग करें:
http://localhost:3000/admin/knowledges/1/steps?params ...
लेकिन यह रहा होगा:
http://localhost:3000/admin/programs/1/knowledges/1/steps?params ...

एक ही समस्या है जब मैं बना एक नया संसाधन:
http://localhost:3000/admin/knowledges/1/steps/new
बजाय:
http://localhost:3000/admin/programs/1/knowledges/1/steps/new

ही पी ब्रेडक्रम्ब ... आदि के साथ roblem ...

क्या मैं एप्लिकेशन/व्यवस्थापक/steps.rb में अब तक की कोशिश की है:

ActiveAdmin.register Step do 

    belongs_to :knowledge 

    config.clear_action_items! 
    action_item :only => :index do 
    link_to('Create Step', new_admin_program_knowledge_step_path(knowledge.program.id, knowledge.id)) 
    end 

    index do 
    column :id 
    column :knowledge 
    column :title 
    column "Actions" do |step| 
     link_to("Voir", admin_program_knowledge_step_path(step.knowledge.program, step.knowledge, step), :class => "member_link show_link") +\ 
     link_to("Editer", edit_admin_program_knowledge_step_path(step.knowledge.program, step.knowledge, step), :class => "edit_knowledge member_link edit_link", :id => "knowledge_#{dom_id(knowledge)}") +\ 
     link_to("Supprimer", admin_program_knowledge_step_path(step.knowledge.program, step.knowledge, step), :class => "member_link delete_link", :method => :delete, :confirm => "Delete?") 
    end 
    end 

    filter :id 
    filter :title 
    filter :subtitle 
    filter :stage_type 
    filter :order_by 
    filter :created_at 
    filter :updated_at 

    form :partial => "form" 

end 

और एप्लिकेशन/विचारों/व्यवस्थापक/कदम/_form में। html.erb मुझे सक्रियडमिन फॉर्मबिल्डर का उपयोग करना होगा:

<%= semantic_form_for(resource, :url => admin_program_knowledge_steps_path(resource.knowledge.program, resource.knowledge), :builder => ActiveAdmin::FormBuilder) do |f| 
    f.inputs "Step" do 
    f.input :knowledge, :as => :hidden 
    f.form_buffers.last << f.template.content_tag(:li, f.template.content_tag(:label, "Knowledge")+f.template.content_tag(:p, f.object.knowledge.title)) 
    f.input :title 
    f.input :order_by 
    end 
    f.buttons 
end %> 

अच्छा ... मैं अटक गया हूं।

यह अच्छी तरह से कैसे संभालें? किसी भी सुराग की सराहना की ...

उत्तर

4

ठीक है, समाधान बहुत सरल है ... https://github.com/josevalim/inherited_resources

+2

इस रेल 3.2.6 के साथ और 0.4.4 active_admin –

+0

बुरा करने के लिए काम करने के लिए प्रतीत नहीं होता .. हो सकता है कि जोस वैलीम को एए के नए संस्करण के साथ इसे संभालने के सही तरीके से पूछें ... और यहां समाधान पोस्ट करें। Thx –

+0

यह नवीनतम 'रेल 4.1' और 'ActiveAdmin 1.0pre' (मास्टर से) में बहुत अच्छा काम करता है। धन्यवाद :)। –

संबंधित मुद्दे