我有一些嵌套资源(名称空间,页面和注释),url看起来像这样:
http://example.com/namespaces/objects/pages/super-page
- 太长了。
从路由中删除资源名称的最佳方法是什么?我想得到类似的东西:
http://example.com/objects/super-page/
更新:名称空间控制器中只有show
个动作。
答案 0 :(得分:1)
您可以在资源
上设置路径属性 resources :pages, :path => '' do
我发现这篇文章非常有助于自定义我的网址http://jasoncodes.com/posts/rails-3-nested-resource-slugs
还有一个伟大的宝石可以摆脱id并自定义slug,friendly_id's,http://railscasts.com/episodes/314-pretty-urls-with-friendlyid
答案 1 :(得分:1)
您可以在路由中使用shallow
参数
e.g:
resources :namespaces, :shallow => true do
resources :objects do
resources :pages
end
end
然后你可以使用像
这样的路线page_path(1) #=> '/pages/1'
object_page_path(1,1) #=> '/object/1/pages/1'
namespace_page_path(1, 1) #=> '/namespace/1/pages/1'