新規登録ページだと<%= render 'shared/error_messages', object: @user %>でエラー表示されたがログインページだと<%= render 'shared/error_messages', object: @user %>でエラー表示されなかったのでAIに聞いてみた
AI解答
Deviseを使用した場合、新規登録ページ(registration)やパスワードリセットページ(password reset)など、一部のページではデフォルトでエラーメッセージが自動的に表示される仕組みがありますが、ログインページ(session)に関しては、エラーメッセージの表示はデフォルトではサポートされていないことがあります。
これは、Deviseがログインフォームに対してエラーメッセージを自動で表示する仕組みを提供していないためです。通常、ログインが失敗した場合、Deviseはフラッシュメッセージを生成しますが、これを適切なフォームの位置に表示するためには、アプリケーションのビューで明示的に設定する必要があります。
例えば、ログインページのビュー(`sessions/new.html.erb`)にて、適切な箇所に以下のようにフラッシュメッセージを表示するコードを追加することができます:
```erb
<% if flash[:alert].present? %>
<div class="alert alert-danger">
<%= flash[:alert] %>
</div>
<% end %>
```
このようにすることで、Deviseが生成するログインエラーメッセージ(`flash[:alert]`)を適切に表示することができます。
まとめ
ログインページは新規登録ページと違いエラーメッセージを自動で表示する仕組みを提供していないので<%= flash[:alert] %>というコードを追加する必要がある。
app\views\devise\sessions\new.html.erb
無事エラー表示できました。