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][]", '' %>
我在学习目标和任务之间有一个 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][]", '' %>