Mi pregunta es similar a esta, pero para una aplicación Rails.
Tengo un formulario con algunos botones de opción y me gustaría asociar etiquetas con ellos. El label
asistente de formulario solo toma un campo de formulario como parámetro, pero en este caso tengo varios botones de opción para un solo campo de formulario. La única forma en que veo hacerlo es crear manualmente una etiqueta, codificando la identificación que se genera automáticamente para el botón de opción. ¿Alguien sabe de una mejor manera de hacerlo?
Por ejemplo:
<% form_for(@message) do |f| %>
<%= label :contactmethod %>
<%= f.radio_button :contactmethod, 'email', :checked => true %> Email
<%= f.radio_button :contactmethod, 'sms' %> SMS
<% end %>
Esto genera algo como:
<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
Lo que quiero:
<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
fuente
fuente
:value
opción af.label
hará lo mismo. por ej<%= f.label :contactmethod, 'SMS', :value => 'sms' %>
. Esto establece el atributo "for" de la etiqueta de etiqueta correctamente, lo que hace que al hacer clic en la etiqueta se seleccione el botón de opción apropiado. En la respuesta anterior, simplemente usar ellabel
ayudante hará que el atributo "for" sea incorrecto cuando se cree el botón de opción con FormBuilderchecked
valor condicional stackoverflow.com/a/4708921/429521Al pasar la
:value
opción a,f.label
se asegurará de que elfor
atributo de la etiqueta de etiqueta sea el mismo que el ID del correspondienteradio_button
Ver ActionView :: Helpers :: FormHelper # label
fuente
field_with_errors
div cuando es necesario (que no aparece cuando se usa el:contactmethod_email
método). ¡Esta es la respuesta correcta!Si desea que el object_name tenga el prefijo de cualquier ID, debe llamar a los ayudantes de formulario en el objeto de formulario:
Esto también asegura que los datos enviados se almacenen en la memoria en caso de que haya errores de validación, etc.
Si no puede llamar al método de ayuda de formulario en el objeto de formulario, por ejemplo, si está usando una etiqueta de ayuda (radio_button_tag, etc.) puede interpolar el nombre usando:
En este caso, deberá especificar el valor manualmente para preservar cualquier envío.
fuente
Al usar
true
/false
como valor, el campo se completará previamente si el modelo pasado al formulario ya tiene este atributo completado:fuente
Este es un ejemplo de mi proyecto para calificar usando
radio
botones y sulabel
sfuente