resources :some_resource
也就是说,有一条路由/some_resource/:id
事实上, :id
为some_resource
将永远保存在会话中,所以我想覆盖路径/some_resource/:id
与/some_resource/my
。 或者,我想重写它/some_resource/
并删除路径GET /some_resource/
索引操作。
我如何能达到这两个目标?
resources :some_resource
也就是说,有一条路由/some_resource/:id
事实上, :id
为some_resource
将永远保存在会话中,所以我想覆盖路径/some_resource/:id
与/some_resource/my
。 或者,我想重写它/some_resource/
并删除路径GET /some_resource/
索引操作。
我如何能达到这两个目标?
在你的routes.rb地说:
get "some_resource" => "some_resource#show"
前行
resources :some_resource
然后将铁轨拿起你“搞定”它找到的资源之前...超然的get / some_resource
此外,你应该指定:
resources :some_resource, :except => :index
虽然,如前所述,导轨不会把它捡起来,这是一个很好的做法
陈的回答工作正常(我用了一段时间这种做法),但有一个标准化的方式。 在官方的Rails指南使用收集路线是首选。
集路由是否存在,所以Rails会不会认为你在指定资源:id
。 在我看来,这是不是覆盖使用中优先级的路由更好routes.rb
文件。
resources :some_resource, :except => :index do
get 'some_resource', :on => :collection, :action => 'show'
end
如果你需要指定除收集路线越多,那么使用该块是首选。
resources :some_resource, :except => :index do
collection do
get 'some_resource', :action => 'show'
# more actions...
end
end