強力なパラメーターに関するRails 4のネストされた属性の問題について、SOには多くのリソースがありますが、これに関する解決策は見つかりません:(重複している場合は申し訳ありません)
メンバーとプロフィールの間には 1 対 1 の関係があります。プロファイル属性を持つメンバーを更新しようとすると、次のエラーが発生します:
Unpermitted parameters: profile
パラメータはどこにありますか
===> params: {"member"=>{"profile"=>{"first_name"=>"test", "last_name"=>"test"}, "email"=>"test@test.com"}}
私のモデル:
メンバー.rb
class Member < ActiveRecord::Base
...
has_one :profile
accepts_nested_attributes_for :profile
end
Profile.rb
class Profile < ActiveRecord::Base
belongs_to :member
end
私のフォーム:
edit.html.slim
= simple_form_for [:admin, @member] do |f|
= f.simple_fields_for @member.profile do |pf|
= pf.input :first_name
= pf.input :last_name
= f.input :email
= f.button :submit
そして私のコントローラー:
admin/members_controller.rb
class Admin::MembersController < Admin::BaseController
before_action :set_member, only: [:edit]
def edit
end
def update
if @member.update(member_params)
Rails.logger.debug "===> (1)"
redirect_to edit_admin_member_path
else
render action: 'edit'
end
end
private
def set_member
@member = Member.find(params[:id])
end
def member_params
params[:member].permit(:email, profile_attributes: [:first_name, :last_name ])
end
end
私は多くのことを試しましたが、私の間違いがどこにあるのかわかりません..さらに、更新メソッドでは、 @member が正しく更新されていると表示されます (===> (1) を表示)