我想创建一条路由,以允许删除所有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/

10-09 20:30