Pertanyaan saya mirip dengan yang satu ini tetapi untuk aplikasi Rails.
Saya memiliki formulir dengan beberapa tombol radio, dan ingin menghubungkan label dengan mereka. The label
bentuk helper hanya membutuhkan formulir isian sebagai parameter, tetapi dalam hal ini saya memiliki beberapa tombol radio untuk bidang bentuk tunggal. Satu-satunya cara yang saya lihat untuk melakukannya adalah secara manual membuat label, mengkodekan keras ID yang dihasilkan secara otomatis untuk tombol radio. Adakah yang tahu cara yang lebih baik untuk melakukannya?
Sebagai contoh:
<% form_for(@message) do |f| %>
<%= label :contactmethod %>
<%= f.radio_button :contactmethod, 'email', :checked => true %> Email
<%= f.radio_button :contactmethod, 'sms' %> SMS
<% end %>
Ini menghasilkan sesuatu seperti:
<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
Apa yang saya inginkan:
<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
sumber
sumber
:value
opsi untukf.label
akan melakukan hal yang sama. mis<%= f.label :contactmethod, 'SMS', :value => 'sms' %>
. Ini mengatur atribut "untuk" dari label label dengan benar, yang membuat mengklik label memilih tombol radio yang sesuai. Dalam jawaban di atas, hanya menggunakanlabel
helper akan menyebabkan atribut "for" salah ketika tombol radio dibuat dengan FormBuilderchecked
nilai stackoverflow.com/a/4708921/429521Melewati
:value
opsi untukf.label
memastikanfor
atribut label label sama dengan id yang terkaitradio_button
Lihat label ActionView :: Helpers :: FormHelper #
sumber
field_with_errors
div bila perlu (itu tidak muncul saat menggunakan:contactmethod_email
metode). ini jawaban yang benar!Jika Anda ingin agar object_name diawali dengan ID apa pun, Anda harus memanggil form helpers pada objek form:
Ini juga memastikan setiap data yang dikirimkan disimpan dalam memori jika ada kesalahan validasi, dll.
Jika Anda tidak bisa memanggil metode form helper pada objek form, misalnya jika Anda menggunakan tag helper (radio_button_tag, dll.) Anda bisa menginterpolasi nama menggunakan:
Dalam hal ini, Anda harus menentukan nilai secara manual untuk menyimpan kiriman apa pun.
sumber
Menggunakan
true
/false
sebagai nilai akan memiliki bidang diisi sebelumnya jika model yang dikirimkan ke formulir memiliki atribut ini sudah diisi:sumber
Ini contoh dari proyek saya untuk rating menggunakan
radio
tombol danlabel
ssumber