Rails中通过checkbox实现批量删除


在Rails生成的控制器模版中,包含的destroy只能处理单个对象,而批量删除要求能够同时处理多个对象,这需要自定义一个批量操作action。批量删除的效果图如下:
deleting multiple records

每一行记录的第一列设置成checkbox,用于标记此行是否被选中。表下方放置一个全选checkbox,表示全部选中或全部反选。全选和反选的JavaScript代码如下:

<script>
function toggle_checkall(field_name, state) {
  var checkboxes = document.getElementsByTagName('input');
  var count = checkboxes.length;
  for (var i = 0; i < count; i++) {
    if (checkboxes[i].type == "checkbox"
        && checkboxes[i].name == field_name + "_ids[]") {
      checkboxes[i].checked = state;
    }
  }
}
</script>

在routes.rb中配置批量删除action:

resources :departs do
  delete 'destroy_multiple', : on => collection
end

在index.html.erb中添加代码:

<%= form_tag destroy_multiple_departs_path, method: :delete do %>
<%= submit_tag "删除选中" %>
<table>
...
<th><input type="checkbox" onclick="toggle_checkall('depart', this.checked);" /></th>
...
<td><%= check_box_tag "depart_ids[]", depart.id %></td>
...
</table>
<% end %>

在controller中添加批量删除实现代码:

def destroy_multiple
  Depart.destroy(params[:depart_ids]) unless params[:depart_ids].blank?
  respond_to do |format|
    format.html { redirect_to departs }
    format.json { head :no_content }
  end
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值