2016-07-27 2 views
0

사용자가 서명까지하고 Enter 키를 누릅니다허가되지 않은 매개 변수

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 

내가 알 수 나는이 내 응용 프로그램 컨트롤러

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 

이 오류가 가입 할 때 레일에 고안하는 것 문제 및 해결 방법

+0

당신이 달성 원하는? – uzaif

답변

0

참조를 위해이 코드를 사용하고 원하는 사용자 테이블의 열 이름을 params으로 변경할 수 있습니다.을 사용하고 있습니다. 0 이 있습니다 :)

0

그렇게이 방법 PARAMS 허용 가입 시간에 문제를 가지고하는 데 도움이 귀하의 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 

희망이를 추가합니다. 또한 장치 gem의 Strong Parameters를 선택하십시오.

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을 콘솔로 이동하고 난

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 Prakash 이걸 확인해주세요. –

1

에 빈 채로 얻을 때 일입니다 이 문제를 해결하려면 코드에서 forpermit으로 바꿉니다.

설명 :

고안 :: ParamsSanitizer에있어서 #for가 고안 4.2에서 제거하고, 두 개의 새로운 방법 및 #sanitize#permit로 대체되었다.

#permit은 블록 인수를 취하므로 아마도 여기에서 사용하고자하는 것일 수 있습니다.

은 다음을 참조하십시오
https://github.com/plataformatec/devise/blob/v4.2.0/CHANGELOG.md#420---2016-07-01
https://github.com/plataformatec/devise/blob/v4.2.0/lib/devise/parameter_sanitizer.rb#L108

관련 문제