我有2个模型 - 批量和分割。
批量has_many:提交 提交belongs_to:batch
我的提交表有一个字段/列,用于存储每个提交的批处理ID,
在我的新批处理表单中,用户可以通过复选框选择提交并保存表单。这会将新创建的批次ID与选定的提交相关联。
我目前正在使用以下代码来允许用户选择提交并保存表单,而表单又会创建一个新批处理并将新批处理ID与选定的提交相关联。
选择提交的代码:
<% @subs.each do |submission| %>
<td><%= check_box_tag "batch[submission_ids][]", submission.SUB_ID, @batch.submissions.include?(submission) %></td>
<td><%= submission.SUB_ID %></td>
<td><%= submission.SUB_NAME %></td>
</tr>
<%end%>
除了编辑时,它似乎工作正常。
如果我创建一个新批次并将2个提交与之关联,然后我编辑该特定批次并取消选择所有提交并保存批次,则不会保存更改。但是,如果我取消选择其中一个提交或选择其他提交,则会保存更改。
仅在编辑包含所选提交的批处理时才会收到此错误,并且在取消选择所有预先选择的提交后尝试保存该批处理。
我真的对此感到困惑,并认为错误可能与check_box_tag有关。
如果有人能就此向我提出一些建议,我将不胜感激。
非常感谢你的帮助
答案 0 :(得分:2)
我曾遇到过同样的问题。问题是未发送未选中的框。来自:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box
“疑难杂症 HTML规范说未选中的复选框不成功,因此Web浏览器不会发送它们。 [...]“
虽然说check_box_tag应该没问题(http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag),但我必须传递隐藏的field_id,以防所有复选框都未选中。
这是一般线索,但我希望它有所帮助。您应该检查日志,如何以及是否传递ID(或者当没有传递时以不同方式处理)。
祝你好运!