2016-09-05 90 views
0

在我的路線我有使用check_box_tag和的link_to如何刪除多條記錄 - Rails4

delete 'boshu_hombu/delete_data', :as => :delete_data 

在我的控制器,刪除方法

def delete_data 
    if params[:boshus] 
    BoshuHombu.where(id: params[:boshus]).destroy_all 
    end 
    redirect_to edit_all_path 
end 

在我的意見,我爲刪除選擇多個記錄使用複選框,我有一個按鈕來調用刪除動作

<%= link_to '削除', { action: :delete_data}, method: :delete, 
data: { confirm: 'Are you sure?' }, :class => 'btn btn-danger' %> 
<% @get_boshu_data.each do |user| %> 
    <tr> 
    <td><%= check_box_tag "boshus[]", user.id %></td> 
    <td><%= user.id %></td> 
    <td><%= user.kyujin_site %></td> 
    <tr/> 
<% end %> 

但是如何獲得選定的值在我的控制器的delete_data行動中。如何去做這件事?謝謝

+0

是否有一個原因,你需要一個鏈接,而不是一種形式?看起來你應該使用'form_tag',然後你的控制器代碼可以正常工作。 – Shadwell

+0

我知道,但由於某些原因,我無法在此處使用表格。你能想到替代方案嗎? –

+1

我想你將不得不使用JavaScript來重寫鏈接提交到的URL。問題是,因爲它是':delete'鏈接,rails已經會生成javascript來提交它作爲一個表單,所以我不知道它會多麼容易被鉤入。你可能會更好,只需要編寫自己的JavaScript並從鏈接中取出'method::delete'。 – Shadwell

回答

2

試試這個:

<%= link_to '削除', { action: :delete_data}, method: :delete, 
data: { confirm: 'Are you sure?' }, :class => 'btn btn-danger', id:'delete' %> 
<% @get_boshu_data.each do |user| %> 
    <tr> 
    <td><%= check_box_tag "boshus[]", user.id, false, class: 'check' %></td> 
    <td><%= user.id %></td> 
    <td><%= user.kyujin_site %></td> 
    <tr/> 
<% end %> 

<script> 
$(document).ready(function(){ 
var href = $('#delete').attr('href') 

$('#delete').on('click',function(){ 
    var newHref = href + '?' 
    $('.check').each(function(){ 
    if ($(this).prop('checked') == true) newHref+='boshus%5B%5D='+$(this).val()+'&' 
    }); 
    $('#delete').attr('href',newHref) 

}); 

}); 
</script> 
+0

感謝您的幫助,它似乎不起作用 –

+0

您是否在控制檯中發現錯誤?也顯示我在html中生成的link_to –

+0

'削除'是生成的html –