ERB复选框具有不同的id,但相同的值表现得很奇怪

时间:2016-10-20 00:56:52

标签: html ruby-on-rails ruby-on-rails-4 web erb

对于我的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,但只是得到了相同的检查,我怀疑是由于相同的值。

有什么方法可以阻止这种行为吗?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 这更深植于我的破旧控制器实践,混合了过度使用ERB fields_for。

所以对于我的控制器,我只有一个@ bigmodel.options.build,而在控制器中我有四个f.fields_for选项。问题是大模型与选项有一个关联,因此无论html输出如何,所有选项都被平等对待。

由于html输出是唯一的,因此提交的值是可以的 - 不是错误的 - 但是当服务器端出现问题时,有很多问题必然会出现在html中。