with text_field tag rails form_with form fields_for ruby-on-rails ruby ruby-on-rails-3 form-for

ruby-on-rails - text_field - select form rails



Cambiar el id del formulario html generado por form_for rails 3.1 (3)

Tengo este 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" %>

Eso genera el siguiente código 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>

Si tengo muchos formularios en la misma página, no es un html válido con la misma identificación.

  • La identificación para form_for generate id = "new_comment"
  • La identificación para textarea generate id = "comment_content"

Con tantos formularios en una misma página no es válido html.

¿Cómo puedo cambiar el id autogenerado por form_for method helper from carriles 3.1?


Añadiendo a lo que dijeron los micrófonos, la forma más fácil de crear identificaciones de formularios únicas para las publicaciones sería usar los números de identificación de la publicación en el atributo de id como se muestra a continuación:

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


Creo que la opción :namespace es lo que estás buscando.

Añade el nombre a la identificación del formulario, así como a todos los campos de entrada y etiqueta.

p.ej

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

Generaría:

Form id = NAMESPACE_new_comment

Textarea id = NAMESPACE_comment_content

De los docs :

: espacio de nombres: un espacio de nombre para su formulario para garantizar la exclusividad de los atributos de id en los elementos del formulario. El atributo de espacio de nombres tendrá un guion bajo en la ID HTML generada


Debería poder establecer el id del formulario a lo que desee. Algo como:

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