Railsで日本語でのバリデーションエラーメッセージの出し方
こんにちは!kossyです!
日本株式の売買単位の統一のニュースが出てました。
昔から株持ってる方なんかは、自分の株数が減ってると言って怒る方もいるんですよね。。。
1000株→100株になれば株数は減っても株価は10倍になるわけですから。(詳しくは「株式併合」でググってみてください)
まぁ、それぐらい自分の資産に興味ないってことなのかもしれませんが。
さて、今回はRailsで日本語でのエラーメッセージの出し方をブログに残したいと思います。
環境
Rails 5.1.6
Ruby 2.5.1
haml
MacOS Yosemite
まずは日本語化対応
アプリ名 $ bundle list
コマンドで確認します。
その中に、
* i18n (1.1.0) (バージョンは環境によって異なります)
とあれば大丈夫です。
各モデルにバリデーションを設定
バリデーションの設定の仕方については
下記の記事が詳しかったです。
qiita.com
application.rbを編集
config/application.rbに、
class Application < Rails::Application config.i18n.default_locale = :ja config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s] end
と記載します。
ja.ymlファイルをgithubからダウンロード
github.com
ファイルの置き場所は、config/locales下に置きます。
htmlへの記載
エラーメッセージを表示したいファイル %ul - @変数名.errors.full_messages.each do |message| %li= message
errors.full_messagesで全てのエラーメッセージを配列で取得します。
そして、each文を用いて全て表示するようにしています。
ja.ymlファイルの編集
ja: activerecord: models: モデル名: "モデル" attributes: モデル名: カラム名: 日本語のカラム名 (以下は例) ja: activerecord: models: review: "レビュー" attributes: review: bookname: "本のタイトル" language: "言語" level: "レベル" content: "本文"
日本語化したいモデルのカラム名を記述しています。
開発環境で確認!
英語表記だった箇所が日本語になっていれば対応完了です。
参考にしたサイト
Railsで日本語化対応にする方法 - Qiita
【Rails】バリデーションのエラーメッセージを表示する - イソップブログ
[初学者]Railsのi18nによる日本語化対応 - Qiita