我想在同一页面中对同一个模型多次使用form_for帮助器。但是输入字段使用相同的ID属性(在HTML中),因此单击另一个表单中字段的标签将在第一个表单中选择相同的输入。
除了通过以下方式手动设置所有属性之外是否有解决方案:for => “title _#{item.id}”和:id => “标题_#{item.id}”?
使用Rails 3.0.9
答案 0 :(得分:32)
您可以使用:namespace => 'some_unique_prefix'
选项。与:index
相比,这不会更改name
属性中使用的值。
也可以使用数组,例如如果您有嵌套的表单或不同的表单碰巧有一些共同的字段::namespace => [@product.id, tag.id]
或:namespace => [:product, @product.id]
答案 1 :(得分:10)
我自己找到了答案,可以将一个: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>
请注意,它也会改变输入的名称。
答案 2 :(得分:-5)
我相信你可以添加这个参数:
:html => { :id => 'id_i_want' }