Railsでバリデーションのエラーメッセージを日本語のオリジナルにする方法

バリデーションチェックのアイキャッチ

こんにちは、@Yuuです。
最近Railsの勉強を始めました。
いやぁ、書き方がまだまだ良く分からないところだらけですが、楽しいですね!

Railsでバリデーションチェックを行う時は、ActiveRecordを使用すると思うのですが(それ以外の方法が分からない・・)、
その際のエラーメッセージは以下のように英語で表示されてしまいます。
Railsエラーメッセージ英語版

今回はこのformでのエラーメッセージを、自分の好きなメッセージで表示する方法を学んだので、備考録がてらご紹介したいと思います。

スポンサーリンク

やりたいこと

今回は「product」(商品)というModelを作成します。
productの要件はこんな感じ。

  1. productには、名前・価格・詳細がある。
  2. 名前と価格が入力されていない場合は、登録出来ないようにする。
  3. 名前と価格どちらかが入力されていなかったら、エラーメッセージを日本語で表示する。

最終的には以下のようなエラーメッセージを表示出来るようにしたいと思います。

Railsエラーメッセージ日本語版

では作っていきましょう!

1. productを作成

今回はサクッとscaffoldを使って作成します。

これで要件の1番目、"productには、名前・価格・詳細がある"の完成です。
Railsだと速いですね!(๑•̀ㅂ•́)و✧

2. バリデーションを追加

次にapp/models/product.rbを編集してバリデーションを追加します。

以下のように書くことで、簡単にバリデーションを追加することが出来ます。

試しにrails sを実行し、http://localhost:3000/products/newを開いて何も入力せずに、「create Product」ボタンを押してみると、
Railsエラーメッセージ英語版

最初に貼った画像のように、エラーメッセージが表示されるようになりましたね。

ただ、このままだと英語で何書いてあるか分からん!(ง `ω´)۶
となってしまうので、ここから本題の日本語でエラーメッセージを表示する方法を書いていきたいと思います。

本当はconfig/locales内にja.ymlというファイルを作成し、
処理を追記することで対応出来るのですが、今回はそれとは違う方法をとりたいと思います。

3. エラーメッセージを日本語で表示する

app/models/product.rbの内容を再度変更します。

4,7行目をコメントアウトし、9~21行目を追加しました。

9行目で「バリデーションチェックをする時は、add_error_sampleメソッドを参照してね」と設定し、11~21行目でadd_error_sampleメソッドを定義しています。
そして、add_error_sampleメソッド内で、名前と価格が空ではないかを確認し、空の場合はエラーメッセージを追加する、という流れになっています。

では、実際に確認してみたいと思います。
先程と同じようにhttp://localhost:3000/products/newを開いて何も入力せずに、「create Product」ボタンを押してみると、
Railsエラーメッセージ日本語版
よっしゃ!
無事エラーメッセージを日本語で表示出来ました!(๑•̀ㅂ•́)و✧

あとがき

Railsは本当に速いですね。
ここまでの事をjspやservletを使って1から作ろうと思ったら、かなりめんどくさいので、僕だと20分ぐらいは最低でもかかると思いますが、
Railsだとものの5分あれば出来てしまいますもん・・。

次に作るWebアプリではRails使って作ってみたいなぁと思っているので、引き続きRailsの勉強頑張ろうと思います。

では!
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧

バリデーションチェックのアイキャッチ

この記事が気に入ったらいいね!
して最新情報をチェックしよう!

スポンサーリンク