2016-09-05 30 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 –