2013-10-10 58 views
0

如果我點擊退出按鈕我得到這個錯誤:檢查結果必須是唯一的ASCII或使用相同的編碼與外部的缺省紅寶石2.0 +軌道4 +設計3.1.1註銷問題

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 

    before_action :authenticate_user! 
    before_action :configure_permitted_parameters, if: :devise_controller? 

    protect_from_forgery with: :exception 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email) } 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) } 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) } 
    end 

end 

鏈接:

<%= link_to "Logout", logout_path, title: "Logout", method: :delete %> 

路線:

devise_scope :user do 
    get 'register', to: 'devise/registrations#new', as: 'register' 
    get 'login', to: 'devise/sessions#new', as: 'login' 
    delete 'logout', to: 'devise/sessions#destroy', as: 'logout' 
end 

我不知道問題出在哪裏。

如果我刪除此3行,然後它的工作原理,但我不能註冊一個新用戶:

devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email) } 
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) } 
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) } 

謝謝!

+0

這似乎是您的內容編碼字符串的問題。看起來像混合ASCII和其他編碼。 – phoet

+0

我的所有文檔都以UTF-8格式保存。 – user2822754

+0

你能解決這個問題嗎?我遇到了同樣的錯誤,下面的答案都沒有幫助 – midu

回答

0

嘗試使用以下

devise_parameter_sanitizer.for(:sign_up) << :username 

如果你需要另一個字段,添加一行像上面

0

IM的一個不知道這是原因,但我注意到,你不允許在登錄時將密碼列入白名單。我假設您會這麼做,因爲您在註冊和帳戶更新時使用了密碼。它應該看起來像這樣

devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email, :password) }