rails エラーメッセージを表示する
1. app/views/shared/_error_messages.html.erb以下に以下を記述する。
<% if object.errors.any? %>
<div id="error_messages" class="alert alert-danger">
<ul class="mb-0">
<% object.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
2. パーシャルテンプレートによって、app/views/boards/_form.html.erbに記述する。
<%= form_with model: board, local: true do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="form-group">
<%= f.label :title %>
<%= f.text_field :title, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :body %>
<%= f.text_area :body, class: 'form-control', rows: 10 %>
</div>
<%= f.submit class: 'btn btn-primary' %>
<% end %>
<%= render 'shared/error_messages', object: f.object %>
( この部分がパーシャルテンプレート )
object: f.objectでは、f.objectに@boardが入っており、パーシャル側では、そのobjectのエラー文を表示する。
・補足(form_withヘルパー)
( form_with の基本的な使い方 )
<%= form_with model: モデルクラスのインスタンス do |form| %>
フォーム内容
<% end %>
(今回はviewファイルにlocal: trueを指定)
<%= form_with model: board, local: true do |f| %>
local: true を指定する意味は、local: trueがない場合、Rails 5ではAjaxによる送信という意味になる。ふつうにHTMLとしてフォームを送信する場合にlocal: trueが必要。
上記の画像のようにエラーの件数分表示する。
・参考
この記事が気に入ったらサポートをしてみませんか?