2008-11-06 5 views
0

Je construis une forme simple dans ERB mais le HTML produit par la balise text_field rend invalide l'attribut pour dans l'étiquette.Caractères non valides dans label_tag

<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> 

qui se traduit par l'erreur

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

Comment puis-je générer le texte sans l'e-mail de nom de paramètre imbriqué [nom] pour changer l'étiquette d'étiquette pour attribut? Existe-t-il une approche alternative qui produit du HTML valide?

Répondre

0

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

Par conséquent, ne vous avez besoin:

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

...?

0

SORTEZ des citations, ou générer le contenu div comme une chaîne et l'ajouter à la div.innerHTML