check_box_tag - 一对多关系

时间:2011-06-03 22:45:36

标签: ruby-on-rails

我有2个模型 - 批量和分割。

批量has_many:提交 提交bel​​ongs_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有关。

如果有人能就此向我提出一些建议,我将不胜感激。

非常感谢你的帮助

1 个答案:

答案 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(或者当没有传递时以不同方式处理)。

祝你好运!