【Rails+devise】サインアップ・パスワード変更画面の入力チェックエラー時のルーティングについて

はじめに

Ruby on Railsにてユーザ認証系の処理を実装する際に使用されるgemとしてdeviseがあります。
github.com

本記事ではサインアップおよびパスワード変更画面にて入力チェックエラーがある際のルーティングについて、発生した問題とその解決方法について記載したいと思います。

問題

サインアップおよびパスワード変更画面にて入力チェックエラーを引き起こすと下記のパスに遷移します。

  • サインアップ画面:'/users'
  • パスワード変更画面:'/users/password'

遷移後、ブラウザの更新ボタンを押すとエラーが発生します。
原因として、GETメソッドにて上記のパスが定義されていないことがあげられます。

解決方法

route.rbに下記を追加することで、GETメソッド時の遷移先パスを定義します。

devise_scope :user do
  get '/users', to: 'devise/registrations#new'
  get '/users/password', to: 'devise/passwords#new'
end

github.com
github.com

おわりに

ルーティングの設定によるものだったので気をつけようと思いました。
また、下記に使用したバージョンと検証用アプリケーションの構築方法を記載しておきます。
同様のエラーに直面した際の参考になればと思います。

バージョン

検証用アプリケーション

こちらの記事を参考に構築しました。「タスク用CRUD画面の作成」の手前までで実施しております。
blog.freedom-man.com