2012-02-05 19 views
10

私はRails(3.1.1)でActiveAdmin(0.4.0)を使用しています。ActiveAdminで複数のネストされたリソースを処理する方法は?

複数のネストされたリソースを処理するうまい方法やハックが見つかりません。

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資源:routes.rbをで

ActiveAdmin.register Program do 
end 

ActiveAdmin.register Knowledge do 
    belongs_to :program 
end 

ActiveAdmin.register Step do 
    belongs_to :knowledge 
end 

:として

Considerer 3つのモデル

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

同一のPパンくずリストと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私は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 %> 

まあ...私は立ち往生しています。

これをうまく処理する方法は?任意の手掛かり感謝...

答えて

4

まあ、解決策は非常に簡単です... https://github.com/josevalim/inherited_resources

+2

は、これはレールの不良に3.2.6と0.4.4 active_admin –

+0

で動作するようには思えません。..おそらく、Jose Valimに、AAの新しいバージョンでこれを処理する正しい方法について尋ねて、ここに解決策を投稿してください。 Thx –

+0

最新の 'Rails 4.1'と' ActiveAdmin 1.0pre'(マスターから)でうまくいきます。ありがとうございました :)。 –

関連する問題