使用RESTful控制器删除Rails中的多个对象?

时间:2011-01-05 20:22:13

标签: ruby-on-rails rest

我想使用RESTful控制器删除多个相同类型的对象。

我能想到的最简单的事情就是让destroy动作期望以逗号分隔的对象ID列表来销毁。

有更优雅的方法吗?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

您可以使用嵌套表单..

请参阅http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

我认为那是最优雅的版本......

<% form_for @person do |person_form| %>

  <%= person_form.label :name %>
  <%= person_form.text_field :name %>

   <% person_form.fields_for :children do |child_form| %>

     <%= child_form.label :name %>
     <%= child_form.text_field :name %>

     <% unless child_form.object.new_record? %>
     <%= child_form.check_box '_delete' %>
     <%= child_form.label '_delete', 'Remove' %>
   <% end %>
  <% end %>

  <%= submit_tag %>
<% end %>

答案 2 :(得分:-1)

以下是RESTful请求的外观。

POST /posts/delete_multiple HTTP/1.1
Host: www.example.com

post_ids[]=33&post_ids[]=47&post_ids[]=88

请注意,虽然GETPUTDELETE在REST上下文中具有非常具体的含义,但POST更加模糊,实质上意味着采取某些行动。要采取的操作在URL中给出,并且特定于操作的其他数据在请求的实体(主体)中传递。仅当POSTGETPUT没有预期意义时,才会以这种方式使用DELETE

POST通常被解释为“创建”,但这并不正确。当客户端不知道新创建的资源的URL应该是什么时,我们通常使用POST来创建新资源。但是当客户端确实确定新创建的资源的URL时,正确的动词将是PUT