【问题标题】:ERB checkboxes with different id but same value acting weirdly具有不同 id 但相同值的 ERB 复选框行为怪异
【发布时间】:2016-10-20 00:56:52
【问题描述】:

对于我的 ERB,如果存在具有相同值但用于不同表单的复选框,则在由于创建错误而重新渲染后,具有相同值的不同表单的复选框将被选中。他们不同的身份似乎并不重要。

我有几个用于模型选项的复选框,有两列:大小和:颜色。目前,我正在使用更大的模型来接受 Option 模型的嵌套属性。

在我的表单中,对于每个选项,我都放置了一个复选框,其中包含隐藏的颜色值和复选框的大小,这样:

<%= 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,但只是被平等地检查,我怀疑这是由于相同的值。

有没有办法防止这种行为?

【问题讨论】:

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


    【解决方案1】:

    我解决了这个问题。 这深深植根于我破旧的控制器实践以及过度使用 ERB fields_for。

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

    由于 html 输出是唯一的,所以值提交还可以 - 没有错误 - 但是当服务器端出现故障时,html 必然会出现无数问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多