在我的开发过程中,我认为深度(> 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 Railscast 为例。例如,如果我尝试在第一级使用 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)并且只是取消嵌套这些。我有一个面包屑样式的导航来显示层次结构,这样就足够了,而且我越看它,网址就会变得有点笨拙。