バリデーション設定してある前提でエラーメッセージを表示する方法。
こんにちは。りゅうじです。
バリデーションをモデルに設定してそのエラーメッセージをユーザー作成ページと掲示板作成ページ双方で表示する方法を書きます。
まず、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 %>
と書く事で取得できる。
では、またお会いしましょう^^