りゅうじの学習blog

学習したことをアウトプットしていきます。

バリデーション設定してある前提でエラーメッセージを表示する方法。

こんにちは。りゅうじです。

 

バリデーションをモデルに設定してそのエラーメッセージをユーザー作成ページと掲示板作成ページ双方で表示する方法を書きます。

 

まず、shared/_error_messages.html.erbを作ります。

 

<% if object.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
<ul>
<% object.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

 

このように記載する。

ポイントは objectにする事。こうする事でユーザー作成・掲示板作成の双方に適用できる。

 

そしてこのパーシャルをrenderする為の記載。

users/new.html.erb

.

.

<h1><%= t '.title' %></h1>
<%= form_with model: @user, local: true do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="form-group">
<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
</div>

.

.

boards/new.html.erb(パーシャルがある場合はそちら)

 

<%= form_with model: @board, local: true do |f| %>
<form class="new_board">

<div class="form-group">
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :title %>
<%= f.text_field :title, class: 'form-control' %>
</div>

.

.

このようにform_withの中に

<%= render 'shared/error_messages', object: f.object %>

と書く事で取得できる。

 

では、またお会いしましょう^^