23

我想对同一页面中的同一模型多次使用 form_for 助手。但是输入字段使用相同的 ID 属性(在 HTML 中),因此单击另一个表单中的字段标签将选择第一个表单中的相同输入。

除了通过 :for => "title_#{item.id}" 和 :id => "title_#{item.id}" 手动设置所有属性之外,还有其他解决方案吗?

使用 Rails 3.0.9

4

3 回答 3

32

您可以使用:namespace => 'some_unique_prefix'选项。与 相比:index,这不会更改name属性中使用的值。

也可以使用数组,例如,当您有嵌套表单或碰巧有一些共同字段的不同表单时::namespace => [@product.id, tag.id]:namespace => [:product, @product.id]

于 2012-03-30T15:05:57.660 回答
11

我自己找到了答案,可以将 :index 选项传递给 form_for。该字符串将用于 id 和属性:

<%= form_for @person, :index => @person.id do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.submit %>
<% end %>

将解析

<form accept-charset="UTF-8" action="/person/11" class="edit_person" id="edit_person_11" method="post">
  <!-- Hidden div for csrf removed -->
<label for="person_11_name">Name</label> 
<input id="person_11_name" name="person[11][name]" size="30" type="text" /> 
<input name="commit" type="submit" value="Update Person" /> 
</form>

请注意,它也会更改输入的名称。

于 2011-06-28T12:50:40.497 回答
-6

我相信你可以添加这个参数:

:html => { :id => 'id_i_want' }
于 2011-06-21T15:36:24.550 回答