business
has_oneのモデルがありaddress
、ビジネスの作成時に住所属性を受け入れるフォームを作成しようとしています。エラーが発生します
保護された属性を一括割り当てできません:アドレス
これが私のモデルです
仕事
class Business<ActiveRecord::Base
has_one :address, :as => :addressable
attr_accessible :name, :email, :address_attributes, :password, :password_confirmation
validates_presence_of :address
validates_associated :address
accepts_nested_attributes_for :address
end
住所
class Address<ActiveRecord::Base
attr_accessible :line1, :city, :zip
validates_presence_of :line1, :city, :zip
belongs_to :addressable, polymorphic: true
end
意見
%h2 Sign up
= form_for(:business, :url => business_registration_path) do |f|
= devise_error_messages!
%div
= f.label :name
%br/
= f.text_field :name
%div
= f.label :email
%br/
= f.email_field :email
%div
= f.label :password
%br/
= f.password_field :password
%div
= f.label :password_confirmation
%br/
= f.password_field :password_confirmation
%div
=f.fields_for :address do |address|
=render :partial => 'businesses/shared/address', :locals => {:f => address}
%div= f.submit "Sign up"
= render :partial => "devise/shared/links"
部分図
%div
= f.label :line1, 'Address 1'
%br/
=f.text_field :line1
%div
= f.label :city
%br/
= f.text_field :city
%div
= f.label :zip, 'Postal Code'
%br/
= f.text_field :zip
生の投稿データこれは私が問題だと思うところです
Parameters: {"utf8"=>"✓", "authenticity_token"=>"/h17NgMDr4VCTDd+FxGlAI4RWmfAat9guU9q00hYIA4=", "business"=>{"name"=>"hello", "email"=>"hello@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "address"=>{"line1"=>"this is line1", "city"=>"Andra", "country"=>"Jama", "zip"=>"123123"}}, "commit"=>"Sign up"}
アドレスフィールドはこのようにすべきではありません
"address_attributes"=>{"line1"=>"this is line1", "city"=>"Andra", "country"=>"Jama", "zip"=>"123123"}
address_attributesではなくaddressを生成するのはなぜですか?これが問題の原因である可能性があります。何か案は?私はこれに約2時間苦労しています。提案や解決策を高く評価しました。
Upadte1:
ビューを変更して使用する場合
=f.fields_for :address_attributes do |address|
それ以外の
=f.fields_for :address do |address|
すべてが機能し始めますが、これはすべてのチュートリアルとドキュメントが話していることではありませんか?