2011-05-30 97 views
3

所以我试图用rails中的1个链接删除两个对象。在Rails 3中删除一条链接的两条记录3

我很乐意做这样的事情:

<%= link_to "Remove Items", [Item1, Item2], :confirm => 'Are you sure?', :method => :delete %> 

但它显然没有这样的伎俩..任何想法?

回答

1

我会创建一个链接到ajax控制器操作,将删除这两个项目。编写JavaScript并没有那么糟糕。

2

将项目的id传递给delete方法,然后修改你的delete方法遍历id,如果你有多个。

如果您需要帮助,请告诉我。

+0

我使用的项目是不同的类,所以我不认为像这样传递它们会起作用? – Elliot 2011-05-30 01:16:17

+0

不,它不会,我不知道你会如何安然删除这些项目。你是否与这两个对象上的任何关联一起工作? – 2011-05-30 01:29:17

+0

nope:\我想我可能会在控制器中创建一个自定义方法,并发送一对夫妇参数,指定要删除的内容。 – Elliot 2011-05-30 01:39:03

2

这是德温M的答案的扩展。

为此,您不必使用JavaScript。你可以简单地传递要删除到这样的路由帮助对象的ID:

<%= link_to "Delete these", destroy_many_items_path(:ids => [1,2,3]), :method => :delete ... %> 

然后你会在你的config/routes.rb文件来定义这条路线:

resources :items do 
    collection do 
    delete :destroy_many 
    end 
end 

然后在控制器:

def destroy_many 
    items = Item.find(params[:ids]) 
    items.each { |item| item.destroy } 
    ... 
end 

或者像米沙指出,在意见:

def destroy_many 
    Item.where(:id => params[:ids]).delete_all 
    ... 
end 
+1

你为什么要重复它们? 'Item.where(:id => params [:ids])。delete_all'怎么样? – Mischa 2011-05-30 05:40:49