rails,如果没有选中,则取消设置复选框的值

时间:2013-11-26 15:50:59

标签: ruby-on-rails

我在视图中动态生成一组复选框:

<% Event::NOTIFICATIONS.each do |notification| %>
  <%= check_box_tag "event[notifications][]", 
  notification, 
  @event.notifications.try(:include?, notification) %>
  <%= t("events.notifications.#{notification}") %>
<% end %>

值存储为数组。

但是,当我编辑某个事件并取消选中其中一个通知框(因此未选中任何通知框)时,它将不会清除该数组。参数哈希也不包含notification键。

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:1)

check_box_tag不像check_box那样有效。 check_box创建一个隐藏字段,该字段返回0作为未选中复选框的默认值。另一方面,check_box_tag如果未取消,则不会返回表单中的任何内容。解决此问题的一种简单方法是添加一个隐藏字段,其名称与复选框的名称相同,但值为nil。这将返回一个值为nil的数组作为Rails应忽略的第一个元素。

hidden_field_tag 'event[notifications][]', nil