Question

Je construis un formulaire simple dans ERB mais le code HTML généré par la balise text_field rend l'attribut for de la balise label non valide.

<div>
  <p><%= label_tag "email[name]", "Name" %></p>
  <%= text_field :email, :name, :class => "text_field" %>
</div>

Produit le HTML

<div>
  <p><label for="email[name]">Name</label></p>
  <input class="text_field" id="email_name" name="email[name]" size="30" type="text" />
</div>

Ce qui entraîne l'erreur

  

caractère " [" n'est pas autorisé dans le   valeur de l'attribut "pour".

Comment générer le texte sans le nom de paramètre imbriqué, email [nom] pour modifier le libellé de l'attribut ? Existe-t-il une autre approche permettant de générer du code HTML valide?

Était-ce utile?

La solution

L'attribut for est censé faire référence à l'attribut ID de l'élément pour lequel il s'agit de l'étiquette, pas son nom.

Par conséquent, n'avez-vous pas besoin de:

<div>
  <p><%= label_tag "email_name", "Name" %></p>
  <%= text_field :email, :name, :class => "text_field" %>
</div>

...?

Autres conseils

Supprimez-le des guillemets ou générez le contenu de div en tant que chaîne et ajoutez-le au div.innerHTML

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top