2012-02-05 1 views
10

레일즈 (3.1.1)에서 ActiveAdmin (0.4.0)을 사용하고 있습니다.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 

여기에 프로그램의 인덱스에 대한 URL을이다, 지식과 단계 :
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 ...

I 앱/관리/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 activeadmin 양식 작성기를 사용해야합니다.

<%= 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 %> 

음 ... 나는 붙어 있습니다.

어떻게 처리하는 것이 좋습니까? 모든 단서는 https://github.com/josevalim/inherited_resources

ActiveAdmin.register Step do 
    controller do 
    nested_belongs_to :program, :knowledge 
    end 
end 

답변

4

글쎄, 해결책은 아주 간단합니다 ... 감사합니다 .. 호세 발림에게 AA의 새 버전으로 이것을 처리하고 솔루션을 게시하는 올바른 방법에 대해 물어보십시오. Thx
+2

이 레일 3.2.6와 나쁜으로 –

+0

0.4.4 active_admin 작동하지 않는 것 ... –

+0

그것은 (마스터로부터) 최신'Rails 4.1'과'ActiveAdmin 1.0pre'에서 훌륭하게 작동합니다. 고맙습니다 :). –