2011-05-30 100 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