6

düzeltmek için, aşağıdaki adres rota tanımları aşağıdaki yolları neden iç içe Kontrolörleri Raylar 3.2.11 yılında

resources :foos do 
    resources :bars 
    resources :bangs, :controller => 'foos/bangs' 
end 

 foo_bars GET /foos/:foo_id/bars(.:format)   bars#index 
       POST /foos/:foo_id/bars(.:format)   bars#create 
    new_foo_bar GET /foos/:foo_id/bars/new(.:format)  bars#new 
edit_foo_bar GET /foos/:foo_id/bars/:id/edit(.:format) bars#edit 
     foo_bar GET /foos/:foo_id/bars/:id(.:format)  bars#show 
       PUT /foos/:foo_id/bars/:id(.:format)  bars#update 
       DELETE /foos/:foo_id/bars/:id(.:format)  bars#destroy 
    foo_bangs GET /foos/:foo_id/bangs(.:format)   foos/bangs#index 
       POST /foos/:foo_id/bangs(.:format)   foos/bangs#create 
new_foo_bang GET /foos/:foo_id/bangs/new(.:format)  foos/bangs#new 
edit_foo_bang GET /foos/:foo_id/bangs/:id/edit(.:format) foos/bangs#edit 
    foo_bang GET /foos/:foo_id/bangs/:id(.:format)  foos/bangs#show 
       PUT /foos/:foo_id/bangs/:id(.:format)  foos/bangs#update 
       DELETE /foos/:foo_id/bangs/:id(.:format)  foos/bangs#destroy 
     foos GET /foos(.:format)       foos#index 
       POST /foos(.:format)       foos#create 
     new_foo GET /foos/new(.:format)      foos#new 
    edit_foo GET /foos/:id/edit(.:format)    foos#edit 
      foo GET /foos/:id(.:format)      foos#show 
       PUT /foos/:id(.:format)      foos#update 
       DELETE /foos/:id(.:format)      foos#destroy 

yolları hepsi doğru ancak denetleyici yönlendirmesi yalnızca resources :bangs için doğrudur. resources :bars, bars denetleyiciden ziyade foos/bars denetleyicisine yönlendirmelidir.

Yuvalanmış kaynağı işlemek için foos/ içinde adlandırılmış denetleyicileri ayarlayabilirdim. Ancak, bu durum artık böyle görünmemektedir. Bu davranış ne zaman değişti ve Rails 3.2.11'de aynı işlevi nasıl alabilirim?

DÜZENLEME: Doğru kontrolör eşlemenizde resources :bangs sonuçları farkındayım ama o örtük yaptırmaya muktedir istiyorum. :foos içinde birkaç iç kaynak varsa, denetleyiciyi her kaynak için tanımlamak zorunda kalmak istemiyorum.

cevap

17

Modülü belirtmek için bir alan ekleyebilirsiniz. Raylar, iç içe geçmiş kaynakların denetleyicilerinin kendilerinin yuvalanmadığını varsayar.

resources :foos do 
    scope module: :foos do 
     resources :bars 
     resources :bangs 
    end 
end 
+0

Evet, bunu yapmanın yolu budur. Bu sorunun hala burada olduğunu unuttum. – CITguy

+0

Başka birinin hala sorunuzu alakalı bulabileceğini düşündüm. –

+0

@PhillSparks, bu konuya bir göz atabilir misiniz? Neredeyse aynı, ama anlayamıyorum. http://stackoverflow.com/questions/35672666/rails-structuring-routes-controller-views-for-nested-resources –

1
resources :foos do 
    resources :bars, :controller -> 'foos/bars' 
    resources :bangs, :controller => 'foos/bangs' 
end 

Bu sizin ihtiyacınız olan şey değil mi?

+0

Evet ve hayır. ** ** ** Her kaynak için denetleyiciyi belirtmek zorundayım. Bir rails 2.3 uygulamasında, kaynakları yerleştirmek doğru yolu ve denetleyicileri eşleştirmek için yeterliydi. – CITguy