取消选中所有复选框后更新模型

时间:2018-01-18 02:31:27

标签: ruby-on-rails checkbox

我有一个表单来创建一个设备,用于选择哪些用户拥有设备。因此,其中一个字段是选中用户的复选框:

<% User.all.each do |user| %>
  <label class="checkbox-inline">
    <%= f.check_box :user_ids, {:multiple => true}, user.id, nil  %> <%= user.name %>
  </label>
<% end >

它生成:

<input type="checkbox" value="1" name="device[user_ids][]" id="device_user_ids_1">
<input type="checkbox" value="2" name="device[user_ids][]" id="device_user_ids_2">
<input type="checkbox" value="3" name="device[user_ids][]" id="device_user_ids_3">
<input type="checkbox" value="4" name="device[user_ids][]" id="device_user_ids_4">

编辑对象时,如果我检查任何一个框,则使用其他参数将参数:user_ids传递给控制器​​。但是如果我不检查任何框,如果我不想让任何用户当前链接到设备,那么当参数传递给控制器​​时,参数:user_ids就不存在了。

如果选中“无复选框”,我该如何将"user_ids"=>[]作为参数?

1 个答案:

答案 0 :(得分:1)

您可以为表单内的复选框声明一个隐藏字段,当未选中复选框时,它将被发送为空

<%= f.hidden_field "device[user_ids][]", nil %>

然后

<% User.all.each do |user| %>
    <label class="checkbox-inline">
        <%= f.check_box :user_ids, {:multiple => true}, user.id, name:  'device[user_ids][]' %> <%= user.name %>
    </label>
<% end >

希望能提供帮助