Caractères non valides dans label_tag
-
06-07-2019 - |
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?
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