从url中删除资源

时间:2012-08-23 15:00:12

标签: ruby-on-rails ruby-on-rails-3

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

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

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

2 个答案:

答案 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'