2015-07-10 61 views
3

這些字段是通過遷移添加的,並且創建了視圖的表單,但控制器將參數從視圖過濾到模型。無論我做什麼,我的參數都是不允許的。我的控制器代碼在Devise中編輯自定義字段用戶模型

#應用程序/控制器/用戶/ registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController 
    before_filter :configure_sign_up_params, only: [:create] 
    before_filter :configure_account_update_params, only: [:update] 

    protected 

    # If you have extra params to permit, append them to the sanitizer. 
    def configure_sign_up_params 
    devise_parameter_sanitizer.for(:sign_up)<<[:first_name,:last_name,:profile_image,:graduation_year] 
    end 

    # If you have extra params to permit, append them to the sanitizer. 
    def configure_account_update_params 
    devise_parameter_sanitizer.for(:account_update)<<[:first_name,:last_name,:profile_image,:graduation_year] 
    end 

end 
end 

#配置/ routes.rb中

Rails.application.routes.draw do 
#... 

    devise_for :users, controllers: { account_update: "users/registrations", sign_up:"users/registrations" } 
end 

#錯誤

Parameters: {"utf8"=>"✓", "authenticity_token"=>"Qts15L3n6Xvsn0hwNvIUI6UrWUQyV/qEyoQAZ8M+udMK1RBTQS1XoNWgpg1JrXqWpb9NbrsaHtQVVU8XMwoSIQ==", 
"user"=>{"first_name"=>"a", "last_name"=>"a", 
"profile_image"=>#<ActionDispatch::Http::UploadedFile:0x00000004fe0bb0 @tempfile=#<Tempfile:/tmp/RackMultipart20150709-4420-12guerh.jpeg>, @original_filename="test1.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[profile_image]\"; filename=\"test1.jpeg\"\r\nContent-Type: image/jpeg\r\n">, 
"graduation_year"=>"1", "email"=>"[email protected]", 
"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, 
"commit"=>"Submit"} 

Unpermitted parameters: first_name, last_name, profile_image, graduation_year 

感謝您的幫助大家。真的很感激它!

+0

請接受我的答案,如果工作:) – Pavan

+0

對不起隊友,但錯誤結束了在路線文件,我在下面分享我的答案。 configure_params方法的原始語法工作正常,雖然你更清潔。 –

回答

5

我的配置/ routes.rb搞砸了。它需要的是

devise_for :users, controllers: { registrations: 'users/registrations' } 

然後我需要添加:電子郵件,:密碼:password_confirmation回到應用程序/控制器/用戶/ registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController 
    before_filter :configure_sign_up_params, only: [:create] 
    before_filter :configure_account_update_params, only: [:update] 

    def configure_sign_up_params 
    devise_parameter_sanitizer.for(:sign_up)<<[:first_name,:last_name,:profile_image,:graduation_year, 
     :email,:password,:password_confirmation] 
    end 

    def configure_account_update_params 
    devise_parameter_sanitizer.for(:account_update)<<[:first_name,:last_name,:profile_image,:graduation_year, 
     :email,:password,:password_confirmation] 
    end 
end 

而且還有一個額外的 '結束'在文件的底部。

更新

在色器件(4.3)當前版本/導軌(5.1.3)是相似,但配置功能應更新爲這樣的事:

def configure_sign_up_params 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :age, :height, :weight, :gender]) 
end 
1

我有同樣的問題,像下面的變化爲我工作。

def configure_sign_up_params 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :profile_image, :graduation_year) } 
end 

def configure_account_update_params 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :last_name, :profile_image, :graduation_year) } 
end 
+1

謝謝隊友我會在可以的時候檢查並回復 –

相關問題