我在视图中动态生成一组复选框:
<% Event::NOTIFICATIONS.each do |notification| %>
<%= check_box_tag "event[notifications][]",
notification,
@event.notifications.try(:include?, notification) %>
<%= t("events.notifications.#{notification}") %>
<% end %>
值存储为数组。
但是,当我编辑某个事件并取消选中其中一个通知框(因此未选中任何通知框)时,它将不会清除该数组。参数哈希也不包含notification
键。
关于如何解决这个问题的任何想法?
答案 0 :(得分:1)
check_box_tag
不像check_box
那样有效。 check_box
创建一个隐藏字段,该字段返回0
作为未选中复选框的默认值。另一方面,check_box_tag
如果未取消,则不会返回表单中的任何内容。解决此问题的一种简单方法是添加一个隐藏字段,其名称与复选框的名称相同,但值为nil
。这将返回一个值为nil
的数组作为Rails应忽略的第一个元素。
hidden_field_tag 'event[notifications][]', nil