1

我有一些嵌套资源(命名空间、页面和评论),并且 url 看起来像这样: http://example.com/namespaces/objects/pages/super-page- 它太长了。

从路线中删除资源名称的最佳方法是什么?我想得到类似的东西: http://example.com/objects/super-page/

更新:命名空间控制器中只有show动作。

4

2 回答 2

1

您可以在资源上设置路径属性

 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

于 2012-08-23T15:22:06.017 回答
1

您可以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'
于 2012-08-24T08:48:05.513 回答