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が必要。

スクリーンショット 2021-05-30 13.33.38

 上記の画像のようにエラーの件数分表示する。

・参考

【Rails】 form_withの使い方を徹底解説!

この記事が気に入ったらサポートをしてみませんか?