Rails:多次使用form_for(DOM ID)

iGE*_*GEL 23 ruby-on-rails form-for

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

是否有解决方案除了通过以下方式设置所有属性:for =>"title _#{item.id}"和:id =>"title _#{item.id}"?

使用Rails 3.0.9

Mar*_*ütz 32

你可以使用:namespace => 'some_unique_prefix'选项.与此相反:index,这不会更改name属性中使用的值.

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

  • 值得指出的是,这仅适用于Rails 3.2及更高版本. (5认同)
  • 也许这不是显而易见的,但是:命名空间将在form_for中使用.例如:`form_for:user,:url => user_session_path,:html => {:class =>'form-inline'} ,: namespace =>'quick'do | f |` (3认同)

iGE*_*GEL 11

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

<%= form_for @person, :index => @person.id do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

将解析

<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>
Run Code Online (Sandbox Code Playgroud)

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