##【ゴール】
errorメッセージの表示
##【メリット】
■ UX向上
■ 部分テンプレートの理解度向上
##【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7
##【実装】
###アプリケーション作成
※touch はカレントディレクトリ内でfile作成するコマンド
$ rails new error_test
$ cd error_test
$ rails g scaffold Item name:string texte:text amount:integer
$ rails db:migrate
$ cd app/views/layouts
$ touch _error_messages.html.erb
###モデル追記
※DB保存時の条件
※バリデーション = 保存時の制限 を追加
class Item < ApplicationRecord
validates :name, presence: true
validates :text, presence: true
validates :amount, presence: true
end
###ビュー追記
※パーシャル化し、凡庸性UP
※「layputs/_error_messages.html.erb」に入れる事で
バリデーションを貼っていれば全てのモデルに使用可能に!!!!
<% if model.errors.any? %>
<div class="alert alert-warning">
<ul>
<% model.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
※追加する
<%= render 'layouts/error_messages', model: f.object %>
※scaffold で作成の場合は上記は不要
各 _form のviewにて下記コード記載の為(scaffold超便利ですね)
<% if item.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(item.errors.count, "error") %> prohibited this item from being saved:</h2>
<ul>
<% item.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
以上です。お好みでどうぞ!!!
##【合わせて読みたい】
■エラーメッセージに関して
https://qiita.com/ryuuuuuuuuuu/items/1a1e53d062bff774d88a
■hidden_field
https://qiita.com/tanaka-yu3/items/0d454c5ef80f8267f09d
■アプリケーション作成
https://qiita.com/tanaka-yu3/items/3fe1ed2852c6513d3583