私のアプリでは、ユーザーには 1 つの場所があり、場所はユーザーに属します。
user.rb
has_one :location
accepts_nested_attributes_for :location
attr_accessible ... :location_attributes
location.rb
belongs_to :user
attr_accessible :country, :state, :city, :address, :zipcode, :user_id
users_controller (ユーザーは自動作成されるため、「新しい」ビューはありません)
def edit
@user = current_user
@user.build_location
end
users/edit.html.haml
= form_for @user do |f|
...
= f.fields_for :location do |location|
%p
= location.label :country
= location.text_field :country
%p
= location.label :state
= location.text_field :state
%p
= location.label :city
= location.text_field :city
%p
= location.label :address
= location.text_field :address
%p
= location.label :zipcode
= location.text_field :zipcode
= f.submit
私が得ているエラーは、「保護された属性を一括割り当てできません: 国、州、都市、住所、郵便番号」です。
「保護された属性を一括割り当てできません: location_attribute」タイプのエラーが以前に発生しましたが、それはここでは問題ではありません。
ここに私の(要約)パラメータがあります:
{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"RTpnMsKuByhnGgs9xrX3d0nzKzcaqIcpS75tsujPX2s=", "user"=>{"name"=>"myname", ... "location_attributes"=>{"country"=>"USA", "state"=>"whatever", "city"=>"", "address"=>"", "zipcode"=>""}}, "commit"=>"Update account", "action"=>"update", "controller"=>"users", "id"=>"219"}
ここで何が起こっているのか分かりますか?私は WHILE を検索しましたが、この問題を抱えている人を見つけることができないようです (他の誰も が後者の一括割り当てを持っています)。