Если вы хотите обновить каждое имя в отдельной форме, все, что вам нужно сделать, это переместить цикл выше form_for
:
<% @name.each do |n| %>
<% form_for n do |f| %>
<%= f.error_messages %>
<%= f.text_field :which %>
<%= f.text_field :what %>
<%= f.check_box :published %>
<%= f.submit %>
</p>
<% end %>
<% end %>
Но если вы хотите сделать все это за одну отправку (одну форму), то, я думаю, вы не можете использовать form_for
. Я бы использовал form_tag
для создания пользовательской формы для обновления нескольких экземпляров. Это должно работать как для создания, так и для редактирования формы:
<%= form_tag moderate_names_path do %>
<% @names.each do |name| %>
<fieldset>
<%= fields_for "name[#{name.id}]", name do |name_fields| %>
<p><%=name_fields.label(:this)%>: <br /><%= name_fields.text_field :this %></p>
<p><%=name_fields.label(:that)%>: <br /><%= name_fields.text_field :that %></p>
<p><%= name_fields.check_box :published %> <%=name_fields.label(:published)%></p>
<% end %>
</fieldset>
<br />
<% end %>
<%= submit_tag %>
<% end %>
ВНИМАНИЕ: во втором примере я изменил @name
на @names