Ini adalah sepotong kode yang saya gunakan sekarang:
<%= f.select :project_id, @project_select %>
Bagaimana memodifikasinya untuk membuat nilai standarnya sama dengan params[:pid]
ketika halaman dimuat?
ruby-on-rails
totocaster
sumber
sumber
Jawaban:
Ini harus dilakukan:
sumber
options_for_select
itu cara yang lebih baik. Ini bagus untuk situasi apa pun, baik untuk edit formulir juga.Gunakan atribut yang tepat dari instance saat ini (misalnya
@work.project_id
):sumber
select_tag
juga. Terima kasih itu sangat membantu saya juga.options_for_select(..., f.object.project_id )
Rails 3.0.9
sumber
value3], default
Masalah dengan semua jawaban ini adalah mereka menetapkan bidang ke nilai default bahkan jika Anda mencoba mengedit catatan Anda.
Anda perlu mengatur default ke nilai yang ada dan kemudian hanya mengaturnya ke default aktual jika Anda tidak memiliki nilai. Seperti itu:
Bagi siapa pun yang tidak terbiasa dengan
f.object.field
Anda selalu gunakanf.object
kemudian tambahkan nama bidang Anda di akhir itu.sumber
select2
plugin JS. Berfungsi sempurna jika Anda membuat atau mengedit catatan dengan bentuk yang sama dan menggunakan select2, terutama dengan teks placeholder.Coba ini:
sumber
params[:pid]
itu tidak berhasil, tetapi contoh Anda berhasil.jika params [: pid] adalah string, yang jika berasal dari formulir, itu adalah, Anda mungkin perlu menggunakannya
untuk item yang benar untuk dipilih dalam daftar pilih
sumber
@project
variabel saya dengan id dari tabel database, alih-alih judul, kode ini berfungsi ditambahkan ke bagian belakangform.select
helper:selected: @project
Terima kasih @danengleSaya telah menemukan solusi dan saya menemukan bahwa saya tidak berpengalaman dalam RoR.
Di dalam controller yang mengelola tampilan yang dijelaskan di atas, tambahkan ini:
sumber
sumber
Saya tidak dapat mengaktifkannya dan menemukan bahwa saya perlu menambahkan atribut html "terpilih" tidak hanya ke
<option>
tag yang benar tetapi juga ke<select>
tag. Dokumen MDN tentang atribut yang dipilih dari tag pilih mengatakan:Itu berarti kode tersebut akan terlihat seperti:
sumber
sumber
Atau, Anda dapat mengatur atribut: project_id di controller, karena argumen pertama dari f.select menarik atribut tertentu.
sumber
Jika mencoba mencetak objek f, maka Anda akan melihat bahwa ada objek f. Yang dapat diselidiki untuk mendapatkan item yang dipilih (berlaku untuk semua versi rel> 2.3)
jadi, gunakan skrip berikut untuk mendapatkan opsi yang dipilih dengan benar:
sumber
Sudah dijelaskan, Akan mencoba memberi contoh
biarkan daftar pilih
Jadi kode berikut menghasilkan
Jadi untuk membuat opsi yang dipilih secara default, kita harus menggunakan nilai: terpilih .
jika can_vote? mengembalikan true set yang dipilih: 1 maka nilai pertama akan dipilih yang lain kedua.
jika opsi yang dipilih hanya daftar array bukan terburu-buru maka yang dipilih akan menjadi nilai yang akan dipilih misalnya jika
sekarang yang dipilih hanya akan mengambil
sumber
Jawaban Mike Bethany di atas berfungsi untuk menetapkan nilai default ketika catatan baru sedang dibuat dan masih memiliki nilai yang dipilih pengguna dalam formulir edit. Namun, saya menambahkan validasi model dan itu tidak akan membiarkan saya mengirimkan formulir. Inilah yang berhasil bagi saya untuk memiliki validasi model di lapangan dan untuk menunjukkan nilai default serta nilai yang dipilih pengguna saat dalam mode edit.
validasi model
sumber
Ini seharusnya bekerja untuk Anda. Itu hanya diteruskan
{:value => params[:pid] }
ke variabel html_options.sumber