Saya telah menambahkan bidang ke formulir pendaftaran yang didasarkan pada model yang berbeda, lihat Bagaimana cara menggunakan atribut bersarang dengan model menyusun untuk detail berdarah. Bagian ini berfungsi dengan baik.
Masalahnya sekarang adalah ketika saya menyimpan, itu gagal dalam tindakan membuat pengendali pendaftaran yang disediakan oleh merancang dengan Activerecord::UnknownAttributeError
bidang ini (perusahaan).
Saya berasumsi saya perlu mengganti controller registrasi, atau apakah ada cara yang lebih baik / lebih mudah saya harus mendekati ini?
ruby-on-rails
devise
Craig McGuff
sumber
sumber
Jawaban:
Dalam formulir Anda, apakah Anda meneruskan atribut lain, melalui penugasan massal yang bukan milik model pengguna Anda, atau salah satu model bersarang?
Jika demikian, saya percaya ActiveRecord :: UnknownAttributeError dipicu dalam hal ini.
Kalau tidak, saya pikir Anda bisa membuat controller sendiri, dengan menghasilkan sesuatu seperti ini:
Dan kemudian kirim alat untuk menggunakan kontroler itu daripada default dengan:
sumber
rails generate devise:views
dan dalam Rails 2 (saya pikir) itu:script/generate devise:views
paths.app.views << "app/views/devise"
Andaconfig/application.rb
.Cara yang lebih baik dan lebih terorganisir untuk menimpa Rancang pengontrol dan tampilan menggunakan ruang nama:
Buat folder berikut:
Masukkan semua pengontrol yang ingin Anda timpa ke app / controllers / my_devise dan tambahkan
MyDevise
namespace ke nama kelas pengontrol.Registrations
contoh:Ubah rute Anda sesuai:
Salin semua tampilan yang diperlukan ke dalam
app/views/my_devise
folder Devise gem atau gunakanrails generate devise:views
, hapus tampilan yang tidak Anda timpa dan ubah namadevise
folder menjadimy_devise
.Dengan cara ini Anda akan mengatur segalanya dengan rapi dalam dua folder.
sumber
create
metode Devise's yang saya timpa. Pengontrol perancah yang saya buat yang saya modifikasi berfungsi dengan baik, tetapi bagaimana Anda membuatnya bekerja denganresource
bisnis Devise ?MyDevise::RegistrationsController < Devise::RegistrationsController
menciptakan kesalahan ketergantungan melingkar. Apakah saya melakukan sesuatu yang salah?Saya percaya ada solusi yang lebih baik daripada menulis ulang RegistrationsController. Saya melakukan hal yang persis sama (saya hanya memiliki Organisasi alih-alih Perusahaan).
Jika Anda mengatur bentuk sarang dengan benar, pada tingkat model dan tampilan, semuanya berfungsi seperti pesona.
Model Pengguna Saya:
Model Organisasi Saya:
Pandangan saya: 'merancang / registrasi / new.html.erb'
sumber
resource
dalam tampilan alih-alih variabel instance kelas@resource
?Anda dapat menghasilkan tampilan dan pengontrol untuk merancang kustomisasi.
Menggunakan
dan
Ini akan menyalin pengontrol dan tampilan tertentu dari permata ke aplikasi Anda.
Selanjutnya, beri tahu router untuk menggunakan pengontrol ini:
sumber
Metode yang sangat sederhana Cukup buka terminal dan ketik berikut
Selanjutnya untuk menggunakan tampilan khusus
sekarang di file route.rb Anda
Anda dapat menambahkan pengontrol lain juga. Ini akan membuat alat untuk menggunakan pengontrol di folder pengguna dan tampilan di folder pengguna.
Sekarang Anda dapat menyesuaikan tampilan sesuai keinginan dan menambahkan logika Anda ke pengontrol di folder pengontrol / pengguna. Nikmati !
sumber