Rails form_for复选框可以选择一个collection_check_boxes中的所有框

时间:2018-08-29 17:17:49

标签: ruby-on-rails

我正在尝试在form_for中添加一个复选框,以应用全选/取消全选,这将更新collection_check_boxes的复选框。

目前,我有以下几种(修身款式):

=tb_form_for [:admin, @logo do |f|  
 = f.tb_select :region_id, options_from_collection_for_select(holder, :id, :name, @logo.region_id), multiple: true, prompt: 'Select One'
 = f.collection_check_boxes :region_id, Region.all, :id, :name, class: 'something'
 = f.tb_save_buttons('Logo', admin_logos_path)

由于某种原因,我无法弄清楚是否将愚蠢的check_box放入“全选”,就好像我放了f.tb_check_box一样,我得到的参数数目也不正确(给定0,期望值为1..2)。那是问题之一。另一个问题是实际上要击中collection_check_boxes上显示的所有区域。

我实际上想说要拧紧它,并在默认情况下执行以下操作:

= f.collection_check_boxes :region_id, Region.all, :id, :name do |s|
 .collection-check-box
  = s.check_box(checked: true)
  = s.label

导致的结果:发生意外错误:错误的请求,特别是:Rack :: QueryParser :: ParameterTypeError(参数“ region_id”的预期数组(字符串))。

那么我如何添加一个将全选应用到collection_check_box上的复选框?

1 个答案:

答案 0 :(得分:0)

在页面上的任意位置添加一个复选框

= check_box_tag "", nil, nil, class: "selectall-checkbox"

和一些Javascript

$(".selectall-checkbox").change(function(){
  $(".your-checkbox-class").prop('checked', $(this).is(":checked"))
})