关于强参数的Rails 4中有关嵌套属性的问题,有很多关于SO的资源,但我没有找到任何解决方案:(很抱歉,如果它是重复的)
我在成员和个人资料之间有1-1的关系。 当尝试使用配置文件属性更新成员时,我遇到了此错误:
Unpermitted parameters: profile
我的参数在哪里
===> params: {"member"=>{"profile"=>{"first_name"=>"test", "last_name"=>"test"}, "email"=>"test@test.com"}}
我的模特:
class Member < ActiveRecord::Base
...
has_one :profile
accepts_nested_attributes_for :profile
end
class Profile < ActiveRecord::Base
belongs_to :member
end
我的表格:
= 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
和我的控制员:
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已正确更新(显示===&gt;(1))
答案 0 :(得分:1)
好的吧..
我认为这是由simple_form引起的:
= simple_form_for [:admin, @member] do |f|
= f.simple_fields_for :profile, @member.profile do |pf|
= pf.input :first_name
= pf.input :last_name
= f.input :email
= f.button :submit
答案 1 :(得分:1)
尝试在:member_id
profile_attributes
内添加member_params
所以看起来像这样:
def member_params
params[:member].permit(:email, profile_attributes: [:first_name, :last_name, :member_id ])
end