cómo configurar el atributo de clase con form_tag en rieles

Tengo la siguiente línea de haml:

=form_tag :action => 'create', :controller => 'comments', :class => 'comment_form' do

Pero el html que obtiene salida es:

<form accept-charset="UTF-8" action="/es/comments?class=comment_form" method="post"></form>

Quiero configurar la clase. ¿Cómo hago esto?

<- Actualización ->

Con este:

=form_tag ({ :action => 'create', :controller => 'comments' }, { :class => 'comment_form' }) do

Me sale este error:

 syntax error, unexpected ',', expecting ')'
...', :controller => 'comments' }, { :class => 'comment_form' }...

<- Segunda actualización ->

El problema anterior es el espacio entre 'form_tag' y '(' la respuesta de @ woahdae es correcta

preguntado el 01 de febrero de 12 a las 04:02

5 Respuestas

form_tag toma 2 hashes de opciones, la primera se pasa a url_for, el segundo se pasa al generador de formularios.

Entonces, tienes que hacerlo como:

= form_tag({:action => 'create',...}, {:class => 'comment_form'}) do

de lo contrario, Rails piensa que todos los pares clave / valor son para url_for, que agregará cualquier clave que no comprenda como parámetros de consulta.

contestado el 03 de mayo de 15 a las 13:05

@Mischa lo descubrió. . el problema era el espacio entre form_tag y los parens abiertos - John

fremanoid y @gotqn, esta es definitivamente, 100% la respuesta correcta para la pregunta de los usuarios, donde quería el argumento url_for como un hash. Como se demostró en la respuesta de gamov, el primer argumento también puede ser una cadena, por ejemplo, la producida a través de una ruta con nombre, en cuyo caso el segundo argumento se interpretará implícitamente como un hash, y 'simplemente funcionará'. Créame, esto es correcto. - Woahdae

Sí @woahdae, estoy de acuerdo contigo. Desafortunadamente, no puedo cambiar el voto; debes editar la respuesta. - gotqn

Esto funciona para mi:

form_tag named_route, :method => :put, :class => 'disable_on_submit'

Con rieles 3.0.15

Respondido el 05 de diciembre de 12 a las 09:12

En Rails 5, puede hacer lo siguiente:

<%= form_tag(your_named_path, {class: 'form-inline'}) do %>

<% end %>

Respondido 02 ago 16, 19:08

Puedes seguir como:

form_tag your_path, method: :get, id: "your_id", class: "your_class" do 
end

Respondido el 02 de diciembre de 15 a las 05:12

Esto es incorrecto. Esto solo agregará class = your_class a los parámetros de URL. - Nathan V

En caso de que encuentre esta pregunta y realmente quiera resolver el nombre de clase para un form_for:

<%= form_for @task, html: {:class => "custom_class"} do |f| %>

Respondido 27 Oct 16, 13:10

form_for es diferente a form_tag. - Choza8

@LaceCard Y aún así, es una mejor respuesta que la aceptada. - Compañero extraño

@FellowStranger me salvó el tiempo :) - Amrinder Singh

En promedio, obtengo un voto a favor y un voto en contra por semana en esta respuesta. Común, vierte aquí tu negatividad para que puedas sonreír el resto del día. - Compañero extraño

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.