Ruby 凌驾;“显示”;Rails中的资源路由
也就是说,有一个路由Ruby 凌驾;“显示”;Rails中的资源路由,ruby,ruby-on-rails-3.2,Ruby,Ruby On Rails 3.2,也就是说,有一个路由/some_resource/:id 实际上,某些资源的:id将始终存储在会话中,因此我想用/some\u resource/:id覆盖路径/some\u resource/my。或者我想用/some\u resource/覆盖它,并删除用于索引操作的路径GET/some\u resource/ 如何实现这两个目标?在您的路线中。rb put: resources :some_resource 在行之前 get "some_resource" => "some_res
/some_resource/:id
实际上,某些资源的:id
将始终存储在会话中,因此我想用/some\u resource/:id
覆盖路径/some\u resource/my
。或者我想用/some\u resource/
覆盖它,并删除用于索引操作的路径GET/some\u resource/
如何实现这两个目标?在您的路线中。rb put:
resources :some_resource
在行之前
get "some_resource" => "some_resource#show"
然后rails将在找到资源之前获取您的“get”。。。从而覆盖get/some\u资源
此外,您还应指定:
resources :some_resource
尽管如前所述,rails不会接受它,但这是一个很好的实践效果很好(我使用这种方法已经有一段时间了),但是有一种标准化的方法。在这种情况下,最好使用收集路线
resources :some_resource, :except => :index do
get 'some_resource', :on => :collection, :action => 'show'
end
收集路由的存在使得Rails不会假定您正在指定一个资源:id
。在我看来,这比在routes.rb
文件中使用优先级重写路由要好
resources :some_resource, :except => :index
如果需要指定多个收集路线,则首选使用块
resources :some_resource, :except => :index do
get 'some_resource', :on => :collection, :action => 'show'
end
我不确定您的资源是什么,但听起来它可能是一个单一的资源,在这种情况下,您可以将其设置为resource:some_resource
?这里有更多关于奇异资源的信息:如果你感兴趣的话。我看到了。这对我没有帮助。