バリデーションを定義する
モデル内で定義します。
class User < ApplicationRecord
validates :name, {presence: true}
validates :email, {presence: true}
end
上記では、nameとemailの空の投稿を制限しました。
viewでエラーメッセージを表示する
エラーメッセージはエラーが発生すると、 error.full_message内に配列で入ります。
<% if @user.errors.any? %>
<% @user.errors.full_messages.each do |message| %>
<%= message %>
<% end %>
<% end %>
@user のエラーがあった場合、 @user.errors.full_messages をすべて出力します。
エラーメッセージを日本語にする
エラーメッセージはデフォルトでは英語になっているので日本語化しましょう。
Gem file に追記
Gem file に以下を追加し bundle install してください。
gem 'rails-i18n'
config/application.rb に追記
config/application.rb に以下を追加し、サーバーを再起動してください。
config.i18n.default_locale = :ja
ユーザーカラムの日本語化
このままでは、以下のようにエラーメッセージの value 部分が日本語化されていません。
["nameを入力してください"]
config/locales/models/ に、 ja.yml というファイルを作成します。
ja.yml のファイルに以下を追記します。
ja:
activerecord:
attributes:
user:
name:名前
email:メール
最後に config/application.rb にこのymlファイルの読み込む一文を追記します。
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s]
完成です。
["名前を入力してください"]