errorメソッドを使ってエラーの詳細を表示させる
フラッシュメッセージを使い、「ユーザー登録ができませんでした」等なら上手くいかなかったことは伝えられるものの、どこがエラーで登録ができなかったのか、伝えられたらユーザーもわかりやすいですよね。
例:メールアドレスの蘭がブランク→メールアドレスを入力してください
railsはバリデーションを設定していると、モデルの検証時にエラーメッセージを自動で生成してくれているので、それを利用してエラーの詳細を表示させることができます。
やり方
①エラーメッセージを出力させるパーシャルを作成する
<% if object.errors.any? %> <!-- エラーがあった場合にメッセージを表示させる --> <div class="alert alert-danger"> <ul> <% object.errors.full_messages.each do |message| %> <!-- エラーメッセージを生成する --> <li><%= message %></li> <!-- メッセージを出力させる --> <% end %> </ul> </div> <% end %>
②エラーを表示させたいビュー(HTMLファイル)に先ほど作ったパーシャルの内容をrenderする
<%= render 'shared/error_messages', object: f.object %>
エラーになると以下のように表示されるようになります。