0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails5】deviseを用いた際のパスワード変更画面表示方法について

Last updated at Posted at 2020-10-31

概要

Rails5にてdeviseを導入した際、deviseによって生成されるパスワード変更画面をうまく表示させることができないというトラブルに見舞われたため、備忘録として残しておきます。

※初投稿の記事になりますので、分かりにくかったらすみません、、、

この記事でわかること

  • deviseのログイン前後におけるパスワード変更画面の表示方法

前提

<使用環境>
ruby 2.5.7
rails 5.2.4

※deviseは導入済みとして進めますので、導入方法については以下の記事等を参考にしてください。
参考ページ:Deviseの設定手順をまとめてみた。 その1 導入編

表示方法

deviseのルーティングを確認

devise導入後、コンソール上で「rails routes」コマンドを使ってルーティングを確認すると以下のような形で表示されるかと思います。

$ rails routes
                   Prefix Verb   URI Pattern                                                                              Controller#Action
         new_user_session GET    /users/sign_in(.:format)                                                                 devise/sessions#new
             user_session POST   /users/sign_in(.:format)                                                                 devise/sessions#create
     destroy_user_session DELETE /users/sign_out(.:format)                                                                devise/sessions#destroy
        new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
       edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
            user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                          PUT    /users/password(.:format)                                                                devise/passwords#update
                          POST   /users/password(.:format)                                                                devise/passwords#create
 cancel_user_registration GET    /users/cancel(.:format)                                                                  devise/registrations#cancel
    new_user_registration GET    /users/sign_up(.:format)                                                                 devise/registrations#new
   edit_user_registration GET    /users/edit(.:format)                                                                    devise/registrations#edit
        user_registration PATCH  /users(.:format)                                                                         devise/registrations#update
                          PUT    /users(.:format)                                                                         devise/registrations#update
                          DELETE /users(.:format)                                                                         devise/registrations#destroy
                          POST   /users(.:format)                                                                         devise/registrations#create

このときパスワード変更画面を表示させるためのルーティングは

edit_user_password GET    /users/password/edit(.:format)  

のように思われるかもしれませんが(自分がそうでした)、実はこれとは別にもう1つ変更画面用のルーティングが存在しています。
それが

edit_user_registration GET    /users/edit(.:format)

です。両者の違いは、

edit_user_password GET    /users/password/edit(.:format)  #ログイン前のパスワード変更画面
edit_user_registration GET    /users/edit(.:format)  #ログイン後のパスワード変更画面

とのことです。

「link_to」におけるpath指定など、それぞれ正しく使い分けていきましょう(とは言ってもログイン後のものしか基本使わない気もする)。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?