0
0

More than 1 year has passed since last update.

【rails6】deviseによるユーザー登録失敗時に画面更新すると、Routing Errorが発生する

Last updated at Posted at 2022-01-30

この記事は、ruby on railsとそのgemである'devise'についての基礎知識がある前提で書かれていますのでご注意ください。

どのようなエラーか

deviseには標準でユーザー登録機能が備え付けられています。
この新規登録を行う際、入力情報に不備がある(バリデーションに引っかかる)とエラーが出て、新規登録画面のビューが返されるようになっています。
単純に、DBに保存されたか否かで条件分岐をしているだけだと思うのですが、deviseの中身をじっくり見たわけではないのでそこは明確ではありません。

そこで問題となるのが、登録に失敗することでビューが返された状態だと、よく見るとURLが変化してしまいます(登録画面自体にはさほど変化はありません)。

登録ボタン押す前(エラー前)
スクリーンショット 2022-01-30 18.18.01.png
登録ボタン押した後(エラー後)
スクリーンショット 2022-01-30 18.18.21.png

画像のように/users/sign_upから、/usersに変化しています。

そして、この状態で画面更新をしてしまうと、エラー画面が表示されてしまいます。
スクリーンショット 2022-01-30 18.18.55.png

Routing Errorで、
「"/users"に対して、GETメソッドを用いているルーティングがないよ」
と言われています。

変な設定をしているわけではない(つもり)ので、このエラーは気持ち悪いです。

解消方法

結論から述べると、ルーティングがないと言われているので、
'/users'に対する、GETメソッドのルーティング
を無理矢理ルーティングを作ってあげました。

get '/users', to: '(なんらかのコントローラー名)#index'

このようにすると、エラーは出なくなるのですが、新規登録画面から離れてしまうことになります。

新規登録画面から移動せずにエラーを解消するには、「deviseの中で、新規登録処理を行なっているコントローラーとアクション」を把握すれば良いのではないかと思います。

私は、エラーが出てしまうのが気持ち悪くて解消したかったので、今回はここでとりあえず満足しました。

0
0
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
0