Rails 4:HABTM 复选框问题 -- 无错误

Rails 4: HABTM Checkbox issue -- nil error

我在学习目标和任务之间有一个 HABTM 关系。我能够通过 http://railscasts.com/episodes/17-habtm-checkboxes 实现复选框。但是,当所有框都未选中时,我 运行 遇到了问题。见打击

形式:

<% for task in Task.all %>
<%= check_box_tag "tlo[task_ids][], task.id, @tlo.tasks.include?(task) %>
<%= task.name%>
<%end%>

TLO 控制器:

    def update
     params[:tlo][task_ids] ||= []
     respond_to do |format|
       if(@tlo.update)
        format.html {redirect_to @tlo}
       end
      end
   end

是的,task_ids: [] 在我允许的参数中。当查看日志时,它说 undefined method [] for nil:nilClass. 一些资源说因为在只有选中 none 的复选框的表单上不会提交任何内容?有人有解决方法的建议吗?

当复选框未选中时,其参数将被忽略,不会随提交的表单一起发送。如果给定名称的所有复选框都未选中,则相关参数不会包含在请求中。这就是您在尝试访问它时得到 nil 的原因。

要使参数与请求保持一致,您需要一个空值的隐藏字段。将它放在表单中的所有复选框之前。

<%= hidden_field_tag "tlo[task_ids][]", '' %>