【问题标题】:Unpermitted Parameter: referred_by不允许的参数:referred_by
【发布时间】:2016-11-06 05:09:38
【问题描述】:

我正在制作一个推荐系统,该系统使用此代码将 url 的推荐部分存储在 cookie 中。

before_filter :capture_referral

private
def capture_referral
  session[:ref] = params[:ref] if params[:ref]
end

然后我在我的设计用户注册 html.erb 中调用 session[:ref],就像 <%= f.hidden_field :referred_by, value: session[:ref]%> 一样,我知道 cookie 正在工作,因为参数的输出是:

Aunticity_token"=>"CmYKwW8LxRAIz1eLp6tQcwJefvnEMU1xV3aby0/pWKGqyd4WitO8oTcDu0u+51HcGB7eyyXZzn2jbEg+D48d4A==",  
  "user"=>{
    "email"=>"jexuc@gmail.com", 
    "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", 
    "referred_by"=>"jayhaz"}, 
  "commit"=>"Sign up"}`

但是,在输出中有一个Unpermitted parameter: referred_by,它会停止将referred_by 代码保存到用户的数据库条目中。

我也尝试了以下方法,但它仍然不起作用,是的,它已在我的 routes.rb 文件中声明:

class User::RegistrationsController < Devise::RegistrationsController
  before_filter :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys:[:referred_by])
   # devise_parameter_sanitizer.permit(:account_update, keys:[:first_name, :last_user])
  end
end

完全不知道发生了什么。

【问题讨论】:

    标签: ruby-on-rails forms cookies devise


    【解决方案1】:

    解决了这个问题,我不得不把

    before_filter :configure_permitted_parameters, if: :devise_controller?
    
     def configure_permitted_parameters
     devise_parameter_sanitizer.permit(:sign_up, keys: [:email,:password,:password_confirmation,:referred_by])
    # devise_parameter_sanitizer.permit(:account_update, keys:[:first_name, :last_user])
    end
    

    在我的 application_controller.rb 中,而不是在我的 User::RegistrationsController &lt; Devise::RegistrationsController 中。我不完全确定它为什么起作用,但我认为这可能与application_controller 贯穿整个应用程序有关,而不仅仅是坐在Devise::RegistrationsController 级别。可能有错请在 cmets 中告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      相关资源
      最近更新 更多