Я нахожусь в точке своего развития, что я думаю, что глубоко (> 1) вложенные ресурсы не стоят усилий.Действительно ли глубоко вложенные полиморфные ресурсы стоят усилий?
У меня есть что-то вроде этого:
resources :first-level do
resources :comments
resources :second-level do
resources :comments
resources :first-child do
resources :comments
end
resources :second-child do
resources :comments
end
resources :third-child do
resources :comments
end
end
end
Кикер, что комментарии являются полиморфными к другим ресурсам. Мое намерение состояло в том, чтобы иметь чистые URL-адреса, такие как ~/first-level/34/comments, ~/first-level/34/second-level/56/third-level/comments и т. Д.
Проблема пока полиморфные маршруты, когда вложенные не вызывают ничего, кроме горя. Я следую примеру Ryan Bates Railscasts в качестве примера. Например, если я пытаюсь использовать polymorphic_path на первом уровне он работает хорошо, и я получаю:
polymorphic_path([@commentable, comments]) => ~/first-level/34/comments
но тот же код на ~/first-level/34/second-level/23
терпит неудачу с:
undefined method 'second-level_comment_path' for #<#<Class:0x007fcc4acfbe58>:0x007fcc4ae73d08>
, но когда я смотрю на моих маршрутах фактический имени маршрут first-level_second-level_comment
. Я попытался вручную создать этот second-level_comment_path
в основном псевдонимом first-level_second-level_comment
, но я тоже не мог бы сделать эту работу.
Если кто-то не может указать на явную ошибку, здесь я склоняюсь к этому подходу (http://weblog.jamisbuck.org/2007/2/5/nesting-resources) и просто не разлагаю их. У меня есть стиль навигации в виде палитры, чтобы показать hiearchy, чтобы этого было достаточно, и чем больше я смотрю на него, URL-адреса становятся немного неудобными.
Спасибо за подсказку. Я начал раскладывать свои ресурсы, а затем быстро обнаружил, что легче бороться с проблемами с гнездом. С данным вложенным ресурсом существует легко восстановить иерархию пути, то есть first_second_third_etc_path? –