Rails中覆盖“秀”资源路径(Override “show” resource route in

2019-06-27 16:34发布

resources :some_resource

也就是说,有一条路由/some_resource/:id

事实上, :idsome_resource将永远保存在会话中,所以我想覆盖路径/some_resource/:id/some_resource/my 。 或者,我想重写它/some_resource/并删除路径GET /some_resource/索引操作。

我如何能达到这两个目标?

Answer 1:

在你的routes.rb地说:

get "some_resource" => "some_resource#show"

resources :some_resource

然后将铁轨拿起你“搞定”它找到的资源之前...超然的get / some_resource

此外,你应该指定:

resources :some_resource, :except => :index

虽然,如前所述,导轨不会把它捡起来,这是一个很好的做法



Answer 2:

陈的回答工作正常(我用了一段时间这种做法),但有一个标准化的方式。 在官方的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


文章来源: Override “show” resource route in Rails