0

ログアウト ボタンをクリックすると、次のエラーが表示されます。検査結果は ASCII のみにするか、デフォルトの外部と同じエンコーディングを使用する必要があります

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) }

ありがとうございました!

4

2 に答える 2

0

以下を使用してみてください

devise_parameter_sanitizer.for(:sign_up) << :username

さらに別のフィールドが必要な場合は、上記のような行を追加します

于 2013-11-15T20:25:09.780 に答える
0

これが原因かどうかはわかりませんが、サインイン時にパスワードをホワイトリストに登録することを許可していないことに気付きました。サインアップとアカウントの更新でパスワードを使用するため、それが必要になると思います。このように見えるはずです

devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email, :password) }
于 2013-11-29T18:04:59.340 に答える