rails 技術ブログ

rails 技術ブログ

勉強したことをアウトプットしていきます

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


エラーになると以下のように表示されるようになります。 f:id:terakura-aina:20201027105001p:plain