【问题标题】:Nested attributes - Unpermitted parameters Rails 4嵌套属性 - 不允许的参数 Rails 4
【发布时间】:2013-08-27 20:15:03
【问题描述】:

关于 Rails 4 中有关强参数的嵌套属性问题有很多关于 SO 的资源,但我没有找到任何解决方案:(很抱歉,如果它是重复的)

我的会员和个人资料之间是一对一的关系。 尝试使用个人资料属性更新成员时出现此错误:

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

个人资料.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))

【问题讨论】:

    标签: ruby-on-rails-4 simple-form strong-parameters


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      尝试在profile_attributes 中添加:member_id member_params

      所以它看起来像这样:

      def member_params
            params[:member].permit(:email, profile_attributes: [:first_name, :last_name, :member_id ])
      end
      

      【讨论】:

      • 您还需要将 :id 添加到 profile_attributes 列表中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多