web-dev-qa-db-fra.com

comment définir l'attribut de classe avec form_tag dans rails

J'ai la ligne de haml suivante:

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

Mais le code HTML qui obtient la sortie est:

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

Je veux définir la classe. Comment puis-je faire cela?

<- Mise à jour ->

Avec ça:

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

Je reçois cette erreur:

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

<- Deuxième mise à jour ->

Le problème ci-dessus est l'espace entre 'form_tag' et '(' La réponse de @ woahdae est correcte

34
John

form_tag prend 2 options de hachage, le premier étant passé à rl_for , le second étant passé au générateur de formulaire.

Donc, vous devez le faire comme:

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

sinon Rails pense que toutes les paires clé/valeur sont pour url_for, qui ajoutera toutes les clés qu'il ne comprend pas comme paramètres de requête.

57
Woahdae

Sur Rails 5, vous pouvez effectuer les opérations suivantes:

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

<% end %>
8
pastullo

Cela fonctionne pour moi:

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

Avec Rails 3.0.15

8
gamov

Vous pouvez faire comme suit:

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