Флажки ERB с другим идентификатором, но с тем же значением, ведут себя странно

#html #ruby-on-rails #ruby-on-rails-4 #web #erb

#HTML #ruby-on-rails #ruby-on-rails-4 #веб #ошибка

Вопрос:

Для моего ERB, если есть флажки с одинаковыми значениями, но для разных форм, после нового рендеринга из-за ошибки создания флажки для разных форм с одинаковым значением будут проверены. Похоже, что их разные идентификаторы не имеют значения.

У меня есть несколько флажков для параметра модели с двумя столбцами: размер и: цвет. В настоящее время я использую более крупную модель, чтобы accept_nested_attributes для модели 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 и все остальное, но просто проверяются одинаково, что, как я подозреваю, связано с одним и тем же значением.

Есть ли какой-либо способ предотвратить такое поведение?

Ответ №1:

Я решил проблему. Это было более глубоко укоренилось в моей убогой практике контроллера, смешанной с чрезмерным использованием ERB fields_for.

Итак, для моего контроллера у меня есть только один @bigmodel.options.build, а в контроллере у меня есть четыре параметра f.fields_for. Проблема заключалась в том, что большая модель имела одну ассоциацию с параметрами, и поэтому все параметры обрабатывались одинаково, независимо от вывода html.

Поскольку вывод html был уникальным, представление значения было в порядке — не глючило — но когда что-то выходило из строя на стороне сервера, возникало множество проблем, связанных с html.