Rails: использование form_for несколько раз (идентификаторы DOM) - PullRequest
23 голосов
/ 21 июня 2011

Я бы хотел использовать помощник form_for несколько раз для одной и той же модели на одной странице.Но поля ввода используют один и тот же атрибут идентификатора (в HTML), поэтому при нажатии на метку поля в другой форме будет выбран тот же ввод в первой форме.

Есть ли решение помимо настройки всех атрибутоввручную через: for => «title _ # {item.id}» и: id => «title _ # {item.id}»?

Использование Rails 3.0.9

Ответы [ 3 ]

32 голосов
/ 30 марта 2012

Вы можете использовать опцию :namespace => 'some_unique_prefix'.В отличие от :index, это не изменит значение, используемое в атрибуте name.

Также можно использовать массив, например, если у вас есть вложенные формы или другие формы, в которых есть полявместе: :namespace => [@product.id, tag.id] или :namespace => [:product, @product.id]

11 голосов
/ 28 июня 2011

Я нашел ответ сам, можно передать опцию: index в form_for. Эта строка будет использоваться в идентификаторе и для атрибутов:

<%= 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>

Обратите внимание, что это также изменит имя входов.

0 голосов
/ 21 июня 2011

Полагаю, вы можете добавить этот параметр:

:html => { :id => 'id_i_want' }
...