Laa*_*aas 12 routing ruby-on-rails-3
我想创建一个允许删除所有的路由shares.RESTful方式是使用动词DELETE.如何创建指向以下内容的路由:
DELETE /shares
Run Code Online (Sandbox Code Playgroud)
我尝试过这些路线:
resources :shares do
delete :on => :collection
end
Run Code Online (Sandbox Code Playgroud)
但这产生了一个错误,铁轨不能nil变成一个符号.
现在我有:
resources :shares do
delete 'delete_all', :on => :collection
end
Run Code Online (Sandbox Code Playgroud)
编辑:我有一个控制器动作名称的拼写错误,后一种方式工作,但产生的URL /shares/delete_all不是很RESTful.
如何删除_delete_all_部分?
MDa*_*lke 14
对于Rails 3,你可以这样做,并分别有指向index和delete_all的资源丰富的GET/DELETE集合操作:
resources :shares do
delete :index, on: :collection, action: :delete_all
end
Run Code Online (Sandbox Code Playgroud)
如果您正在使用Rails 4,您可以利用关注点来干掉它并将其应用于许多资源:
concern :deleteallable do
delete :index, on: :collection, action: :delete_all
end
resources :shares, concerns: :deleteallable
resources :widgets, concerns: :deleteallable
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
match 'shares', :to => 'shares#delete_all', :via => :delete
Run Code Online (Sandbox Code Playgroud)
更多信息:http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/
<subjective opinion>
这通常是一个坏主意和代码/设计气味.需要通过RESTful接口删除所有记录应该真正在受保护(经过身份验证)的操作后面和/或操作应该以某种方式限定给用户.
| 归档时间: |
|
| 查看次数: |
6902 次 |
| 最近记录: |