ruby on rails - sirven - Etiquetas para botones de radio en forma de rieles
pasos para crear formularios en html (3)
Al pasar la opción :value
a f.label
se asegurará de que la etiqueta de etiqueta for
atributo sea la misma que la identificación del radio_button
correspondiente radio_button
<% form_for(@message) do |f| %>
<%= f.radio_button :contactmethod, ''email'' %>
<%= f.label :contactmethod, ''Email'', :value => ''email'' %>
<%= f.radio_button :contactmethod, ''sms'' %>
<%= f.label :contactmethod, ''SMS'', :value => ''sms'' %>
<% end %>
Ver la ActionView::Helpers::FormHelper#label
la opción: valor, que está diseñada para las etiquetas de destino para etiquetas de radio_button
Mi pregunta es similar a esta pero para una aplicación de Rails.
Tengo un formulario con algunos botones de opción y me gustaría asociar etiquetas con ellos. La label
formulario de ayuda 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 que veo de hacerlo es crear manualmente una etiqueta, codificando con fuerza 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>
Si desea el nombre_objeto prefijado a cualquier ID, debe llamar a los ayudantes de formulario en el objeto de formulario:
- form_for(@message) do |f|
= f.label :email
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á utilizando una etiqueta auxiliar (radio_button_tag, etc.) puede interpolar el nombre usando:
= radio_button_tag "#{f.object_name}[email]", @message.email
En este caso, deberá especificar el valor manualmente para preservar los envíos.
<% form_for(@message) do |f| %>
<%= f.radio_button :contactmethod, ''email'', :checked => true %>
<%= label :contactmethod_email, ''Email'' %>
<%= f.radio_button :contactmethod, ''sms'' %>
<%= label :contactmethod_sms, ''SMS'' %>
<% end %>