🏮

[Rails7.0.2.3]deviseを用いた場合、エラーメッセージが出ない問題

2022/04/23に公開

version

  • Rails 7.0.2.3

問題点

deviseを用いたログイン機能を実装しようとした場合にエラーメッセージが出ない
(メールアドレスが空ですとか表示されていてほしい)


解決法

簡潔に説明すると

  1. deviseのcontrollerを編集する(直接ではない)
  2. respond_with resourceの部分をrespond_with resource, status: :unprocessable_entityに変更する

原因

  • Rails7からTurboライブラリがデフォルトでインストールされていたから(参考)

https://turbo.hotwired.dev/handbook/drive#redirecting-after-a-form-submission
が原因っぽい。(参考)


終わりに

もっといい解決法はあると思います。(devise controllerのactionをそれぞれコピペしてきて一部を変えるというのは面倒なので...)


参考にさせていただいた記事

https://qiita.com/ryohashimoto/items/f5382478c78f296d8291
https://zenn.dev/takeyuweb/articles/8ebe80bf442dc2
https://zenn.dev/satococoa/articles/95122320f1ca87
https://developer.mozilla.org/ja/docs/Web/HTTP/Status/422


追記

  • deviseがTurboに対応していないことが原因ということ
  • deviseのissueでも上がってた(公式リポジトリみる癖つけよう.....)

↓↓(とてもわかりやすかった記事)
https://qiita.com/jnchito/items/5c41a7031404c313da1f#deviseがturboに対応していない

Discussion