Rails无法保存未选中的复选框

时间:2019-04-15 18:49:09

标签: ruby-on-rails checkbox

我刚刚注意到,当用户尝试删除表单上的支票时,实际上并没有保持状态。

我的表单如下(使用Slim)

=f.tb_label :marketing_systems
=hidden_field_tag 'course_group[marketing_systems][]', nil
.col-sm-10
 .multi-select
  table
   tbody
    -MarketingSystem.ordered.each do |system|
     -input_name = "course_group_marketing_system_#{system.id}"
     tr
      td = check_box_tag 'course_group[marketing_system_ids][]',
                 system.id,
                 @course_group.marketing_systems.include?(system),
                 id: input_name

我认为在隐藏标签字段上设置nil可以在为空时将其推送。但是事实并非如此。我的check_box_tag是否设置有问题,并且没有传递空值?

我尝试将参数放在括号中,然后在check_box_tag上将checked = false放入,但这没有用。如果我添加value = 0,那么它会引发一个参数过多的问题。我只是想通过删除system.id来更新数据,如果未选中的话。

1 个答案:

答案 0 :(得分:0)

只需使用collection_check_boxes

= form_for(@course_group) do |f|
  .col-sm-10
   .multi-select
     table
       f.collection_check_boxes(:marketing_systems, :id, :name) do |b|
         tr
           td
             = b.label
           td
             = b.check_box