Большое спасибо, Паскаль, это было очень полезно для меня. Я заметил похожее поведение при настройке моих вложенных ресурсов.
Я бы добавил что-то, возможность использовать оператор блока для мелкого вместо параметра. Прямо сейчас, используя синтаксис, который вы дали, только прямые потомки (: страницы) будут поверхностными.
Если по какой-либо случайности вы захотите вложить на один уровень глубже (давайте пропустим спор о том, является ли это наилучшей практикой или нет), использование мелкого блока приведет к глубине, необходимой для этого:
resources :users do
shallow do
resources :categories do
resources :sections do
resources :pages
end
end
resources :news
end
end
Вот пример доступных помощников по маршрутам для всех ресурсов, вложенных в: users
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"}