我在学习目标和任务之间有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.
有些资源说因为在一个只有复选框而没有被选中的表单上却没有提交任何内容?有没有人有解决方法的建议?
答案 0 :(得分:0)
取消选中复选框时,将忽略其参数与提交的表单一起发送。如果取消选中给定名称的所有复选框,则请求中不包含相关参数。这是您在尝试访问时获得nil
的原因。
要使参数与请求保持一致,您需要一个空值为的隐藏字段。将它放在表单中的所有复选框之前。
<%= hidden_field_tag "tlo[task_ids][]", '' %>