Vielen Dank, Pascal, das war wirklich nützlich für mich. Ich habe ein ähnliches Verhalten beim Einrichten meiner verschachtelten Ressourcen festgestellt.
Ich würde etwas hinzufügen, nämlich die Möglichkeit, eine Blockanweisung für shallow anstelle eines Parameters zu verwenden. Im Moment werden mit der von Ihnen angegebenen Syntax nur die direkten Nachkommen (:pages) als oberflächlich eingestuft.
Wenn Sie zufällig eine Ebene tiefer schachteln wollen (lassen wir die Diskussion darüber, ob dies die beste Vorgehensweise ist oder nicht, beiseite), können Sie einen flachen Block verwenden, der so tief wie nötig ist:
resources :users do
shallow do
resources :categories do
resources :sections do
resources :pages
end
end
resources :news
end
end
Hier ein Beispiel für die verfügbaren Routen-Helfer, die Sie für alle in :users verschachtelten Ressourcen haben werden
new_category_section GET (/:locale)(/:locale)/categorys/:category_id/sections/new(.:format) {:locale=>/fr|en/, :action=>"new", :controller=>"sections"}
edit_section GET (/:locale)(/:locale)/sections/:id/edit(.:format) {:locale=>/fr|en/, :action=>"edit", :controller=>"sections"}
section GET (/:locale)(/:locale)/sections/:id(.:format) {:locale=>/fr|en/, :action=>"show", :controller=>"sections"}
PUT (/:locale)(/:locale)/sections/:id(.:format) {:locale=>/fr|en/, :action=>"update", :controller=>"sections"}
DELETE (/:locale)(/:locale)/sections/:id(.:format) {:locale=>/fr|en/, :action=>"destroy", :controller=>"sections"}
section_pages GET (/:locale)(/:locale)/sections/:section_id/pages(.:format) {:locale=>/fr|en/, :action=>"index", :controller=>"pages"}
POST (/:locale)(/:locale)/sections/:section_id/pages(.:format) {:locale=>/fr|en/, :action=>"create", :controller=>"pages"}
new_section_info_page GET (/:locale)(/:locale)/sections/:section_id/pages/new(.:format) {:locale=>/fr|en/, :action=>"new", :controller=>"pages"}
dit_info_page GET (/:locale)(/:locale)/pages/:id/edit(.:format) {:locale=>/fr|en/, :action=>"edit", :controller=>"pages"}
info_page GET (/:locale)(/:locale)/pages/:id(.:format) {:locale=>/fr|en/, :action=>"show", :controller=>"pages"}
PUT (/:locale)(/:locale)/pages/:id(.:format) {:locale=>/fr|en/, :action=>"update", :controller=>"pages"}
DELETE (/:locale)(/:locale)/pages/:id(.:format) {:locale=>/fr|en/, :action=>"destroy", :controller=>"pages"}