6

In Rails 3.2.11 zu korrigieren, ich habe alle richtig in den folgenden Strecken führen die folgende Route DefinitionenRails Verschachtelte Ressourcen zur Route Erste verschachtelte Controller

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

die

 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 

Die Wege sind , aber das Controller-Routing ist nur für resources :bangs korrekt. Die resources :bars sollte zu der foos/bars-Steuerung statt der bars-Steuerung weitergeleitet werden.

Früher konnte ich namespaced Controller innerhalb foos/ einrichten, um die verschachtelte Ressource zu behandeln.

#app/controllers/foos/bars_controller.rb 

class Foos::BarsController < ApplicationController 
    #/foos/:foo_id/bar/:id available here 
end 

Dies scheint jedoch nicht mehr der Fall zu sein. Wann hat sich dieses Verhalten geändert und wie bekomme ich die gleiche Funktionalität in Rails 3.2.11?

EDIT: Ich stelle fest, die resources :bangs Ergebnisse in der richtigen Controller-Mapping, aber ich möchte in der Lage sein, dass implizit getan zu haben. Wenn ich mehrere verschachtelte Ressourcen innerhalb von :foos habe, möchte ich nicht den Controller für jede Ressource definieren müssen.

Antwort

17

Sie können einen Bereich hinzufügen, um das Modul anzugeben. Rails geht davon aus, dass die Controller für Ihre verschachtelten Ressourcen nicht selbst verschachtelt sind.

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

Ja, das ist der Weg, es zu tun. Ich habe vergessen, dass ich diese Frage immer noch hier hatte. – CITguy

+0

Ich dachte, jemand anders könnte deine Frage immer noch relevant finden. –

+0

@PhillSparks, könnten Sie sich dieses Problem ansehen? Es ist fast dasselbe, aber ich kann es nicht herausfinden. 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 

Ist das nicht das, was Sie benötigen?

+0

Ja und nein. Ich möchte ** NICHT ** den Controller für jede Ressource angeben müssen. In einer App "rails 2.3" war das Verschachteln der Ressourcen ausreichend, um den richtigen Pfad und die richtigen Controller zuzuordnen. – CITguy

Verwandte Themen