Rails: использование form_for несколько раз (идентификаторы DOM)
Я хотел бы использовать form_for helper несколько раз для одной и той же модели на той же странице. Но поля ввода используют один и тот же идентификационный атрибут (в HTML), поэтому нажатие на метку поля в другой форме будет выбирать один и тот же ввод в первой форме.
Есть ли решение помимо настроек всех атрибутов вручную через: for = > "title _ # {item.id}" и: id = > "title _ # {item.id}"?
Использование Rails 3.0.9
Ответы
Ответ 1
Вы можете использовать опцию :namespace => 'some_unique_prefix'
. В отличие от :index
, это не изменит значение, используемое в атрибуте name
.
Также возможно использовать массив, например. когда у вас есть вложенные формы или разные формы, которые имеют некоторые общие поля: :namespace => [@product.id, tag.id]
или :namespace => [:product, @product.id]
Ответ 2
Я сам нашел ответ, можно передать опцию 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>
Обратите внимание, что это также изменит имя входов.
Ответ 3
Я считаю, вы можете добавить этот параметр:
:html => { :id => 'id_i_want' }