设计嵌入对象'未经许可的参数'错误

时间:2014-11-17 20:15:12

标签: ruby-on-rails ruby forms devise gem

我有以下用户更新控制器

class RegistrationsController < Devise::RegistrationsController

    def update
        super
        UserMailer.send_mail_on_account_update(current_user).deliver
    end

    before_filter :configure_permitted_parameters, if: :devise_controller?
    protected
    def configure_permitted_parameters
        devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :last_name, :username, :email, :password, :password_confirmation, :current_password, :shipping_details) }
    end

    def after_update_path_for(resource)
        edit_user_registration_path(resource)
    end
end

我的用户模型embeds_many :shipping_details和送货详细信息包含一些字段,例如city,state。

在我的用户更新表单中,我有shipping_details的嵌套属性。但是当我提交表格时,我会看到以下内容 -

    Parameters: {"utf8"=>"✓", "authenticity_token"=>"/baDj9ThSRdF80inrxzM2G3sTtCXYqxNpl4PgDLJczM=", "user"=>{"first_name"=>"rohit", "last_name"=>"sharma", "email"=>"rohit@sharma.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "current_password"=>"[FILTERED]", "shipping_details"=>{"address"=>"jldf", "city"=>"test"}}, "commit"=>"Update Details"} 
Unpermitted parameters: shipping_details

如何让它允许shipping_details字段?我做错了什么?

1 个答案:

答案 0 :(得分:1)

您提供:shipping_details的方式意味着它需要一个简单的字符串值,然后您传入哈希值。你应该在你的许可证中这样做:

:shipping_details => { :address, :city }