form_for
semble ignorer tout attribut «supplémentaire» comme un data-foo
attribut ou class
passé comme options
dans son deuxième argument.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
La sortie est une <form>
balise sans x
classe ni data-bar
attribut.
Quelle est la solution?
Ou, comment puis-je récupérer une FormBuilder
instance sans l'utiliser form_for
?
ruby-on-rails
ruby-on-rails-3
Alan H.
la source
la source
= form_for @user, :html => {'class' => 'x'} do |f|
.class
devrait être un symbole au lieu d'une chaîne.Rails 4.0.3, Ruby 2.1.0p0 -> cela a fonctionné pour moi =>
la source
J'ai eu le même problème, mais j'étais étonné qu'un autre formulaire ailleurs dans mon application fonctionne correctement.
J'ai réalisé que j'avais accidentellement ajouté un form_for dans un autre form_for qui, une fois supprimé, avait résolu le problème.
Deuxièmement, je dois ajouter que cette syntaxe fonctionne pour moi dans Rails 4.2:
Je trouve cela préférable à la soupe de ponctuation des autres réponses ici (qui étaient peut-être basées sur une version plus ancienne de Rails).
la source
Sur la plupart des helpers, le dernier argument est un hachage d'options html pour l'élément.
Vous pouvez également consulter d'autres alternatives dans la documentation ActionsView :: Helpers :: FormHelper
la source
J'ai essayé ce qui précède sans succès mais j'ai trouvé une solution. J'utilise des rails 4.1.6.
Cela n'a pas fonctionné
Cela a fait
remarquez la différence avec l'option html, j'espère que cela vous aidera
la source
= form_for(:user, :url => login_path, html: {:class => 'login_form'}) do |f| %>
C'était la seule façon pour mon code d'appliquer la classe, sinon il l'ignorait simplement.