form_for
semble ignorer les attributs "supplémentaires" comme un data-foo
attribut ou class
passé en tant que options
dans son deuxième argument.
= form_for @user, {:url => 'foo', :class => 'x', 'data-bar' => 'baz' } do |f|
# ...
La sortie est un <form>
tiquette sans x
classe ou data-bar
attribut.
Quelle est la solution?
Ou, comment puis-je récupérer une instance FormBuilder
sans utiliser form_for
?
Utilisez le :html
hash:
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} do |f|
Ou
= form_for @user, :html => {class: 'x', data: { bar: 'baz' } } do |f|
Rails 4.0.3, Ruby 2.1.0p0 -> cela a fonctionné pour moi =>
<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if @contact.errors.any? %>
J'avais le même problème, mais j'étais perplexe qu'un autre formulaire ailleurs dans mon application fonctionne bien.
Je me suis rendu compte que j'avais accidentellement ajouté un form_for dans un autre form_for qui, une fois retiré, résolvait le problème.
Deuxièmement, je devrais ajouter que cette syntaxe fonctionne pour moi dans Rails 4.2:
<%= form_for @type, html: {class: "form-horizontal"} do |f| %>
Je trouve cela préférable à la ponctuation-soupe des autres réponses ici (qui étaient peut-être basées sur une version plus ancienne Rails)).
Sur la plupart des helpers, le dernier argument est un hachage d’options HTML pour l’élément.
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
Vous pouvez également vérifier d'autres alternatives dans la documentation ActionsView :: Helpers :: FormHelper
J'ai essayé ce qui précède sans succès mais j'ai trouvé une solution. J'utilise Rails 4.1.6.
Cela n'a pas fonctionné
= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>
Cela fait
= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>
remarquez la différence avec l'option html, espérons que cela vous aidera