Ma question est similaire à celle-ci mais pour une application Rails.
J'ai un formulaire avec des boutons radio et j'aimerais y associer des étiquettes. L' label
assistant de formulaire prend uniquement un champ de formulaire en tant que paramètre, mais dans ce cas, j'ai plusieurs boutons radio pour un seul champ de formulaire. La seule façon que je vois pour le faire est de créer manuellement une étiquette, en codant en dur l'ID qui est généré automatiquement pour le bouton radio. Quelqu'un connaît-il une meilleure façon de le faire?
Par exemple:
<% form_for(@message) do |f| %>
<%= label :contactmethod %>
<%= f.radio_button :contactmethod, 'email', :checked => true %> Email
<%= f.radio_button :contactmethod, 'sms' %> SMS
<% end %>
Cela génère quelque chose comme:
<label for="message_contactmethod">Contactmethod</label>
<input checked="checked" id="message_contactmethod_email" name="message[contactmethod]" value="email" type="radio"> Email
<input id="message_contactmethod_sms" name="message[contactmethod]" value="sms" type="radio"> SMS
Ce que je veux:
<input checked="checked" id="message_contactmethod_email" name="message[contactmethod]" value="email" type="radio"><label for="message_contactmethod_email">Email</label>
<input id="message_contactmethod_sms" name="message[contactmethod]" value="sms" type="radio"> <label for="message_contactmethod_sms">SMS</label>
ruby-on-rails
forms
Bryan
la source
la source
:value
option àf.label
fera la même chose. par exemple<%= f.label :contactmethod, 'SMS', :value => 'sms' %>
. Cela définit correctement l'attribut "pour" de la balise d'étiquette, ce qui fait que cliquer sur l'étiquette sélectionne le bouton radio approprié. Dans la réponse ci-dessus, le simple fait d'utiliser l'label
assistant rendra l'attribut «for» incorrect lorsque le bouton radio est créé avec FormBuilderchecked
valeur conditionnellement stackoverflow.com/a/4708921/429521Le fait de passer l'
:value
option àf.label
garantira que l'for
attribut de la balise d'étiquette est le même que l'id du correspondantradio_button
Voir ActionView :: Helpers :: FormHelper # label
la source
field_with_errors
div si nécessaire (cela n'apparaît pas lors de l'utilisation de la:contactmethod_email
méthode). c'est la bonne réponse!Si vous voulez que le nom de l'objet soit préfixé à n'importe quel ID, vous devez appeler les assistants de formulaire sur l'objet de formulaire:
Cela garantit également que toutes les données soumises sont stockées en mémoire en cas d'erreurs de validation, etc.
Si vous ne pouvez pas appeler la méthode d'assistance de formulaire sur l'objet de formulaire, par exemple si vous utilisez une aide de balise (radio_button_tag etc.), vous pouvez interpoler le nom en utilisant:
Dans ce cas, vous devez spécifier la valeur manuellement pour conserver toutes les soumissions.
la source
En utilisant
true
/false
comme valeur, le champ sera pré-rempli si le modèle passé au formulaire a cet attribut déjà rempli:la source
Ceci est un exemple de mon projet d'évaluation à l'aide de
radio
boutons et de seslabel
sla source