23

同じページの同じモデルに対してform_forヘルパーを複数回使用したいと思います。ただし、入力フィールドは(HTML内の)同じID属性を使用するため、別のフォームのフィールドのラベルをクリックすると、最初のフォームで同じ入力が選択されます。

:for => "title _#{item.id}"および:id => "title _#{item.id}"を使用してすべての属性を手動で設定する以外に、解決策はありますか?

Rails3.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

私は自分で答えを見つけました。form_forに:indexオプションを渡すことができます。その文字列は、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 に答える