我有一些嵌套资源(命名空间、页面和评论),并且 url 看起来像这样:
http://example.com/namespaces/objects/pages/super-page
- 它太长了。
从路线中删除资源名称的最佳方法是什么?我想得到类似的东西:
http://example.com/objects/super-page/
更新:命名空间控制器中只有show
动作。
我有一些嵌套资源(命名空间、页面和评论),并且 url 看起来像这样:
http://example.com/namespaces/objects/pages/super-page
- 它太长了。
从路线中删除资源名称的最佳方法是什么?我想得到类似的东西:
http://example.com/objects/super-page/
更新:命名空间控制器中只有show
动作。
您可以在资源上设置路径属性
resources :pages, :path => '' do
我发现这篇文章对自定义我的 url 的http://jasoncodes.com/posts/rails-3-nested-resource-slugs很有帮助
还有一个很棒的宝石可以摆脱 id 和自定义 slug,friendly_id,http://railscasts.com/episodes/314-pretty-urls-with-friendlyid
您可以shallow
在路由中使用参数,例如:
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'