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