对于我的ERB,如果复选框具有相同的值但是对于不同的表单,则由于创建错误而在新的渲染之后,将检查具有相同值的不同表单的复选框。它们的不同ID似乎并不重要。
我有几个带有两列的模型选项复选框:size和:color。目前,我正在使用一个更大的模型来接受Option模型的accept_nested_attributes。
在我的表单中,对于每个选项,我将放置一个隐藏颜色值的复选框和大小复选框,以便:
<%= form_for @big do |big| %>
<%= f.fields_for :options do |option| %>
<%= f.hidden_field :color, value: "Red" %>
<%= f.check_box :size, {}, "Small", nil %>
<% end %>
<%= f.fields_for :options do |option| %>
<%= f.hidden_field :color, value: "Blue" %>
<%= f.check_box :size, {}, "Small", nil %>
<% end %>
.....
<% end %>
上面的选项根据html包含每个唯一ID,但只是得到了相同的检查,我怀疑是由于相同的值。
有什么方法可以阻止这种行为吗?
答案 0 :(得分:0)
我解决了这个问题。 这更深植于我的破旧控制器实践,混合了过度使用ERB fields_for。
所以对于我的控制器,我只有一个@ bigmodel.options.build,而在控制器中我有四个f.fields_for选项。问题是大模型与选项有一个关联,因此无论html输出如何,所有选项都被平等对待。
由于html输出是唯一的,因此提交的值是可以的 - 不是错误的 - 但是当服务器端出现问题时,有很多问题必然会出现在html中。