2010-01-26 9 views
0

Je suis générer une entrée comme ceci:Les méthodes de saisie du formulaire ActionView peuvent-elles créer des balises avec le code HTML interne?

<%= form.radio_button("ans", ans.num.to_s) %> 

Le code HTML généré est:

<input id="myform_ans_1" name="myform[ans]" type="radio" value="1" /> 

Mais ce que je cherche est ce html:

<input id="myform_ans_1" name="myform[ans]" type="radio" value="1">Some Text</input> 

Y at-il une option que je peux passer dans la méthode radio_button rendre le html désiré?

Comme je comprends le options hash facultatif que vous pouvez passer à radio_button, cela ajoute seulement des attributs à la balise html.

+0

Est-ce que ce balisage est valide? Je ne sais même pas ce que cela rend ... – jonnii

Répondre

3

Si votre application implique beaucoup de formes, vous devriez vraiment regarder à formtastic. Vous pouvez définir vos formes comme ceci:

<% semantic_form_for @article do |form| %> 

    <% form.inputs :name => "New Article" do %> 
    <%= form.input :title %> 
    <%= form.input :body %> 
    <% end %> 

    <% form.buttons do %> 
    <%= form.commit_button %> 
    <% end %> 

<% end %> 

Cela va générer toutes les balises requises pour les formulaires HTML, y compris fieldsets, légendes, des entrées et des étiquettes.

1

vous devez ajouter des tags <label> avec for attribut comme ceci:

<input id="myform_ans_1" ... /><label for="myform_ans_1">Foobar</label> 

Et non, il n'y a aucun paramètre pour cela. Vous devrez juste utiliser l'aide-étiquette.

1
<p><%= form.radio_button("ans", ans.num.to_s) %> 

<%= form.label("Some Text") %></p> 
+1

Cela fonctionne, mais j'ai ajouté '<% = form.label (:" ans _ # {ans.num} "," Some Text ")%>' pour faire le pour l'attribut de l'étiquette est le même que l'identifiant du champ de saisie. – lillq