Pertanyaan Rails 4 - Merancang dengan nested form - fields_for: simbol issue


Saya mencoba membuat pengguna menggunakan merancang, dan saya ingin membuat business_detail pada sign_up (hubungan satu ke satu).

Saya memiliki hubungan berikut di dalam model.

user.rb

has_one :business_detail, dependent: :destroy
accepts_nested_attributes_for :business_detail

business_detail.rb

belongs_to :user

Di dalam formulir, saya telah menggunakan kode berikut:

= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
  = f.fields_for :business_detail do |b|

Masalahnya di sini adalah bahwa bentuknya tidak diberikan, kecuali saya menggunakan bentuk jamak (:business_details)

Jika saya menggunakan ini, saya tidak akan dapat membuat objek, karena model dinamai tunggal, dan saya tidak bisa melewatkan objek pada fields_for karena kemudian saya tidak akan dapat membuat objek menggunakan merancang buat.

di registrations_controller Aku sudah menambahkan:

def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up) do |u|
    u.permit(:email, :password, :password_confirmation, :business, :name, :occupation, :gender, business_detail: [:city, :industry, :postcode, :photo, :phone])
  end
end

Jika saya menggunakan bentuk jamak (di dalam formulir dan di dalam configure_permitted_parameters metode) params terlihat seperti ini:

{"utf8"=>"✓", "authenticity_token"=>"uH5axM94yiKH5rbVaAyZHzlHD6zoErSPkR5y7wAURhA=", "user"=>{"name"=>"", "password"=>"12345567", "password_confirmation"=>"123123", "business"=>"1", "business_details"=>{"address_line_1"=>"", "address_line_2"=>"", "city"=>"", "country"=>"", "postcode"=>"", "industry"=>"", "phone"=>""}, "email"=>"asdasdasd@aa.a"}, "commit"=>"Create Business Account", "controller"=>"registrations", "action"=>"business_create", "format"=>"user"}

dan hash di dalam devise build_resource metode ini

{"email"=>"asdasdasd@aa.a", "password"=>"12345567", "password_confirmation"=>"123123", "business"=>"1", "name"=>"", "business_details"=>{"city"=>"", "industry"=>"", "postcode"=>"", "phone"=>""}}

Jadi, saya berpikir bahwa mengirim simbol menggunakan bentuk tunggal akan menyelesaikan masalah saya.

Saya sudah mencoba menambahkan model ke daftar infleksi di dalamnya config / initializers / inflections.rb oleh:

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.uncountable %w( business_detail )
end

tetapi itu tidak berhasil.

Ada saran siapa saja?


4
2017-08-10 17:22


asal


Jawaban: