2012-03-01 23 views
0

は、私は非常に興味深いシナリオを持っています。ルートにおいて、それは次のように指定されている:Railsの3ネストされたルーティング

resources :companies do 
    resources :events 
end 
resources: events 

はレーキルートを実行私は、生成されたルートを見ることができます:

events GET /events(.:format) events#index 
company_events GET /companies/:company_id/events(.:format) events#index 

両方のパスが同じコントローラ(グローバルな)にルーティングするように見えます.. 。 私はこのような何かを行くコントローラ/企業の下の2番目のコントローラがありません:それは関係なく、私がcompany_evens_patを使用するかどうか、上記そのコントローラ内のルート

class Companies::EventsController < ApplicationController 
# stuff 
end 

を決してh(@ company)。常に他のものに行く。 それは前述したように、私はこのような何かをやって推薦する私は現在、[OK]を3.2

+0

の内側にあなたの会社:: EventsControllerを置くために、あなたのコントローラのフォルダ内のフォルダを作成します別のコントローラは、それが乾いたままにしておくように思えますが、グローバルイベントコントローラのインデックスアクションにifparams [:company_id]を投げて、それらのイベントだけを表示する必要があります。 –

+0

これは、あなたのルートに従って、期待どおりに動作しています。 EventsControllerとindexメソッドの両方にルーティングします。どのルートに従うかに基づいて異なる動作が必要な場合は、単一のコントローラから実行できます。 –

答えて

2

を使用しています、レールに私のために2.3を動作するように使用:

def index 
    if params[:company_id] 
    @events = Company.find(params[:company_id]).events 
    else 
    @events = Events.all 
    end 
end 

あなたはあなたに必要がある場合に指定することができますが、コントローラ:

resources :companies do 
    resources :events, :controller => "companies/events" 
end 
resources: events 

とちょうど会社はあなたが必要よろしいです

+0

詳細はこちらのドキュメントを参照してください。http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use –

+0

私は他のものが見つからない場合、これを行う必要があると思います溶液。そしてそれは私が手動でコントローラーのテンプレートをレンダリングするように強制します、それはかなり...うーん。 – alexs333

+0

オハイオ州、ああ、あまり考えていなかったのですが、あなたはテンプレートを共有フォルダに入れて、同じ部分に –

関連する問題