我想创建一条路由,以允许删除所有shares
。 RESTful方式是使用动词DELETE
。如何创建指向以下内容的路由:
DELETE /shares
我在路线上尝试过:
resources :shares do
delete :on => :collection
end
但这产生了一个错误,即rails无法将
nil
转换为符号。现在,我有:
resources :shares do
delete 'delete_all', :on => :collection
end
编辑:我在 Controller Action 名称中有一个错字,后一种方式可行,但是会产生URL
/shares/delete_all
,它不是非常RESTful的。如何删除_delete_all_部分?
最佳答案
match 'shares', :to => 'shares#delete_all', :via => :delete
更多信息:http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/
<subjective opinion>
这通常是一个坏主意,并且是代码/设计的味道。通过RESTful接口(interface)删除所有记录的需求实际上应该位于 protected (已认证)的操作之后,并且/或者该操作应以某种方式作用于用户。关于ruby-on-rails-3 - Rails 3路由-:delete method on :collection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6115386/