2016-02-27 57 views
6

我不知道爲什麼,但下面的代碼只是停止工作(我甚至沒有注意到它是怎麼發生的)設計:未經許可參數

的routes.rb

devise_for :users, components: {registrations: 'registrations', sessions: 'sessions'} 

registations_controller .RB

class RegistrationsController < Devise::RegistrationsController 
    before_filter :configure_permitted_parameters 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up).push(:name, :surname, :username, :email, :avatar) 
    devise_parameter_sanitizer.for(:account_update).push(:name, :surname, :email, :avatar) 
    end 

end 

正如我所說的,everyting工作過罰款,但現在我越來越:

Processing by Devise::RegistrationsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"lvuPOmTRqv6XUQ/O1g4Q9VNvzD7DgGCHocY/OlAvKHEIvWAHvlS982hxSZZzzAESCpmL5QTUcTLw/c9ME/sUFQ==", "user"=>{"name"=>"John", "surname"=>"Doe", "username"=>"foobar", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Register"} 
Unpermitted parameters: name, surname, email 

Cofiguration:

  • 的Rails 4.2.5
  • 設計3.5.6

PS:現在我finnaly明白我爲什麼要支付我的代碼與單元測試和使用特拉維斯CI

回答

6

我認爲你應該嘗試「configure_ allowed_pa​​rameters「方法而不是註冊控制器。

class ApplicationController < ActionController::Base 

before_action :configure_permitted_parameters, if: :devise_controller? 

protected 

def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up).push(:name, :surname,:username, :email, :avatar) 
    devise_parameter_sanitizer.for(:account_update).push(:name, :surname, :email, :avatar) 
end 
end 
+0

我幫了我。但爲什麼?之前的代碼發生了什麼? – Viktor

+0

https://github.com/plataformatec/devise請檢閱它。這可能會幫助你。 –

+0

從4.1開始,'for'方法已被棄用。用這個代替: – dexter

5

for方法自4.1以來已被棄用。用這個代替:

class ApplicationController < ActionController::Base  
    before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    attributes = [:name, :surname,:username, :email, :avatar] 
    devise_parameter_sanitizer.permit(:sign_up, keys: attributes) 
    devise_parameter_sanitizer.permit(:account_update, keys: attributes) 
    end 
end 
+0

這不適用於me.any替代嗎? –

相關問題