2011-08-10 9 views
17

deviseを使用している私のレール3アプリでは、ユーザーにパスワードを編集するためのリンクを提供したいと考えています。devise編集のパスワード画面を表示

私が指す標準のリンクがあります:/ユーザー/パスワード/編集を...なぜレールがリダイレクトされ

Started GET "https://stackoverflow.com/users/password/edit" for 127.0.0.1 at 2011-08-10 10:11:46 -0700 
    Processing by Devise::PasswordsController#edit as HTML 
    User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 3 LIMIT 1 
Redirected to http://localhost:3000/ 
Completed 302 Found in 309ms 

下の出力をログに記録しますか?なぜ私はパスワードの編集ページを表示できませんか?ありがとう

+1

あなたの 'routes.rb'と' PasswordController'を表示 – fl00r

+0

フラッシュメッセージのリダイレクトの理由は何ですか?あなたがログインしていない場合はrootにリダイレクトし、パスワードを編集しようとしているので、ユーザーはログインしていませんか? – numbers1311407

+0

@ numbers1311407実際に問題は、ユーザー**が**ログインしていることです。このアクションは、**ログインしていない**パスワードを忘れていて、パスワードリセットトークンを既に受け取っているユーザーのみに適用されます。 –

答えて

27

Devise::PasswordsController#editは、リセットトークンを使用してパスワードを変更したい非認証ユーザーのためのものです。このリセットトークンは以前に電子メールでユーザに送信されました(パスワードのリセット指示)。ユーザーがすでにログインしている場合、このパスワードの編集ページは認証済みのユーザーがアクセスできないようにするため、サインイン後のパスに常にリダイレクトされます。

ログイン後にユーザーがパスワードを変更できるようにすることをお勧めします。Devise::RegistrationsController#editを使用する必要があります。

+2

他のユーザープロファイル情報の登録コントローラーで編集アクションを使用している場合はどうなりますか?ユーザープロフィール情報(名前、住所など)の編集とパスワードの更新を分けたい場合 – Batman

+0

@Batman https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-パスワード –

関連する問題