2016-07-27 29 views
0

當用戶進行註冊,並按報名我得到這個錯誤未經許可參數添加新的領域,以在軌設計

undefined method `for' for #<Devise::ParameterSanitizer:0x007fe4c2821988> Did you mean? fork 

    } 
elsif params[:action] == 'create' 
    devise_parameter_sanitizer.for(:sign_up) { 
    |u| u.permit(registration_params) 
    } 
end 

這是我的應用程序控制器

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_action :configure_devise_permitted_parameters, if: :devise_controller? 

    protected 
    def configure_devise_permitted_parameters 
    registration_params = [ 
     :first_name, :last_name, :address, :gender, :DOB, 
     :email, :password, :password_confirmation, 
     :image, :thumb, :medium 
    ] 

    if params[:action] == 'update' 
     devise_parameter_sanitizer.for(:account_update) { 
     |u| u.permit(registration_params << :current_password) 
     } 
    elsif params[:action] == 'create' 
     devise_parameter_sanitizer.for(:sign_up) { 
     |u| u.permit(registration_params) 
     } 
    end 
    end 
end 

我能知道是什麼是問題以及如何解決它

+0

你想達到什麼樣的? – uzaif

回答

0

您可以使用此代碼作爲參考,並更改您想要的用戶表中的列名的params。我正在使用username 加入這個在您的application_controller.rb

before_filter :configure_permitted_parameters, if: :devise_controller? 

###### PROTECTED METHODS ####################### 
    protected 
    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:account_update) << :username 
    devise_parameter_sanitizer.for(:sign_up) << :username 
    end 

希望這有助於:)

0

您對註冊時間的問題,所以允許PARAMS這種方式。還要檢查設備寶石上的強參數。

before_filter :update_sanitized_params, only: [:create], if: :devise_controller? 

    protected 
     def update_sanitized_params 
      devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:first_name, :last_name, :address, :gender, :DOB,:email, :password, :password_confirmation,:image, :thumb, :medium)} 
     end 
0

嗯,其實我固定它,但事情是,當我去安慰做User.last,我也得到nill

class ApplicationController < ActionController::Base 
protect_from_forgery with: :exception 
before_action :configure_devise_permitted_parameters, if: :devise_controller? 

protected 
def configure_devise_permitted_parameters 
registration_params = [ 
    :first_name, :last_name, :address, :gender, :DOB, 
    :email, :password, :password_confirmation, 
    :image, :thumb, :medium 
] 

if params[:action] == 'update' 
    devise_parameter_sanitizer.for(:account_update) { 
    |u| u.permit(registration_params << :current_password) 
    } 
elsif params[:action] == 'create' 
    def configure_devise_permitted_parameters 
    devise_parameter_sanitizer.fot(:sign_up).push(registration_params) 
end 
end 
end 

enter image description here

+0

@Chaudhary普拉卡什可以檢查這個請 –