Подтвердить что ты не робот

Измените идентификатор формы html, сгенерированный form_for rails 3.1

У меня есть этот form_for:

<%= form_for [post, Comment.new,], :remote => true do |f| %>
<%= f.text_area :content, :cols =>10, :rows => 1%>
<% end %>
<%= f.submit :class => "input_comment"  %>

Создаем следующий код html:

<form method="post" id="new_comment" data-remote="true" class="new_comment" 
action="/post/4efcda9e1d41c82486000077/comments" accept-charset="UTF-8"><div 
style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8">
<input type="hidden" value="ctVfDF/O4FIR91I7bC5MVezQmutOCkX3dcXe73uNPZY=" name="authenticity_token">

<textarea rows="1" name="comment[content]" id="comment_content" cols="10"></textarea>
<input type="submit" value="Create Comment" name="commit" class="input_comment">
</form>

Если у меня много форм на одной странице, это не html, действительный с тем же идентификатором.

  • Идентификатор для form_for generate id = "new_comment"
  • Идентификатор для textarea сгенерирует id = "comment_content"

Так много форм на одной странице недопустимо html.

Как изменить идентификатор автогенерации с помощью form_for метода helper из rails 3.1?

4b9b3361

Ответ 1

Добавляя к тому, что сказал miked, самым простым способом сделать уникальный идентификатор формы для сообщений будет использование номеров почтовых идентификаторов в атрибуте id, например:

<%= form_for [post, Comment.new,], :remote => true, :html => { :id => "new_comment_on_#{post.id}" } do |f| %>

Ответ 2

Вы должны иметь возможность установить идентификатор формы в любое удобное для вас время. Что-то вроде:

<%= form_for @object, :html=> {:id => 'custom_form_id'} do |f| %>

Ответ 3

Я думаю, что параметр :namespace - это то, что вы ищете.

Он добавляет имя в форму id , а также все поля ввода и метки.

e.g

<%= form_for [post, Comment.new,], namespace: 'NAMESPACE', :remote => true do |f| %>
    <%= f.text_area :content, :cols =>10, :rows => 1%>
<% end %>

Генерирует:

Форма id = NAMESPACE_new_comment

Textarea id = NAMESPACE_comment_content

В docs:

: namespace - пространство имен для вашей формы для обеспечения уникальности идентификатора атрибуты элементов формы. Атрибут пространства имен будет префиксом с подчеркиванием на сгенерированном идентификаторе HTML