101 votes

Utiliser le form_for de Rails mais définir des classes et des attributs personnalisés sur l'élément <form> ?

form_for semble ignorer tout attribut "supplémentaire" comme un data-foo 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> sans x ou data-bar attribut.

Quelle est la solution ?

Ou, comment puis-je prendre un FormBuilder sans utiliser form_for ?

215voto

MurifoX Points 7582

Utilisez le :html haché :

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} do |f|

Ou

= form_for @user, html: {class: 'x', data: { bar: 'baz' } } do |f|

11voto

Jackson_Sandland Points 159

Rails 4.0.3, Ruby 2.1.0p0 -> ceci a fonctionné pour moi =>

<%= form_for(@contact, :html => {:class => 'form_height'}) do |f| %><% if     @contact.errors.any? %>

5voto

MSC Points 62

J'ai eu le même problème mais j'étais perplexe car un autre formulaire ailleurs dans mon application fonctionnait bien.

J'ai réalisé que j'avais accidentellement ajouté un Form_for à l'intérieur d'un autre Form_for qui, une fois retiré, a résolu le problème.

Deuxièmement, je dois ajouter que cette syntaxe fonctionne pour moi dans Rails 4.2 :

<%= form_for @type, html: {class: "form-horizontal"} do |f| %>

Je trouve que c'est préférable à la ponctuation-soupçon des autres réponses ici (qui étaient peut-être basées sur une ancienne version de Rails).

1voto

felipeclopes Points 1704

Pour la plupart des aides, le dernier argument est un hash d'options html pour l'élément.

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>

Vous pouvez également consulter d'autres alternatives dans la documentation ActionsView::Helpers::FormHelper

1voto

doz87 Points 41

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 marché.

= form_for @user, :html => {:class => 'x', 'data-bar' => 'baz'} %>

Cela a fait

= form_for @user, html: {:class => 'x', 'data-bar' => 'baz'} %>

Remarquez la différence avec l'option html, j'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X