問題解決するには2つの記事を参考にすると解決できる!!!


どうも、三町哲平です!!

プロミングをしているととにかく分からない事が出まくりますよね!?
初めて行う実装やエラー解決の為にあれやこれやすると思いますが、そういう時は、本で調べたり、人に聞いたりすることがあるでしょうが、やっぱり一番するのって、ググって調べる事じゃないでしょうか...?

少なくとも私は9割以上の問題に対し、ググって解決しています。

しかし...しかしですよ。

例えばRuby on Railsで出た問題に対してあれやこれや調べたとしても開発環境が違ったり、データベースが違ったり、バージョンが違ったり、アプリ名が違ったりと全く一緒の条件でアプリ開発している可能性なんて限りなく0です。必ずどこかに違いがあります。

そんな微妙な違いによってただコピペしただけだは、中々実装できなかったり、エラー解決できなかったりして最終的には嫌になって止めてしまう...。

そうならない為にも問題に対峙する時にこれに気を付ければ上手く解決できるかもね...というやり方を一つ見つけたので、そのご紹介です。

問題解決するには2つの記事を参考にすると解決できる!!!

タイトル通りなのですが、答えは、
「問題解決するには2つの記事を参考にすると解決できる!!!」です。
もうこれが今回の結論なのですが、これだけじゃ分かりにくいので参考例をどうぞ!

1. やり方が分からない...。

まず、ググって調べるに当たって直面している壁といったらとにかくやり方が分からないって所です。

  • 何で、このエラーは出たのだろう?
  • どうやってこの機能を実装すればいいのだろう?   など、など...

その疑問に対して調べまくった結果、訳わからんって状態になる中で今回は、ja.ymlの書き方が分からないという問題の解決方法を模索していました。

状態としては、投稿フォームで、紹介文というテキスト欄が空欄だった場合に表示するエラーメッセージを全て日本語表示にしたい。

つまり、Contentを入力してくださいContentを日本語にしたいという話です。

ちなみに、Contetは保存したいデータベース(postテーブル)のカラム名になります。

2. ググって行き着いた記事

ググると沢山似たような記事が検索に引っかかる事があります。その中で自分自身にとって分かりやすく、状況が似ている記事を参考にしていく中で私は、
Railsのバリデーションエラーのメッセージの日本語化 - Qiita
この記事を参考にさせて頂きました。


参考にした結果↑この様にja.ymlを作成して、入力しました。

これは、Railsのバリデーションエラーのメッセージの日本語化 - Qiita
カラム名の日本語化コードをコピペしただけです。

この結果が実は先ほどお見せした投稿フォームの画像になります。↓再掲しています。

まあ...つまりは、コードをコピペしただけでは、今回のカラムを日本語化したいという問題は、解決しなかった訳ですね。

3. ja.ymlの書き方が分からないからまたググってみる

ja.ymlの何処かが間違っている...何が違うんだ...!?
そんな疑問の中、エラーメッセージの日本語化を再度調べていく中で、
ActiveRecordのvalidatesで表示されるエラーメッセージのフォーマットを変更する - Qiita
こちらの記事を発見!!

そして、ja.ymlで、

config/local/models/ja.yml
ja:
  activerecord:
    models:
      user: ユーザー
    attributes:
      user:
        name: 名前

↑上記のコードを発見!

config/local/models/ja.yml
ja:
  activerecord:
    models:
      event: イベント
    attributes:
      event:
        name: イベント名
        place: 開催場所
        content: イベント内容

↑これが現在使用しているコードです。

ここで、タイトルの
問題解決するには2つの記事を参考にすると解決できる!!!
を思い出して下さい。

2つのコードを見ている中で、これって、

config/local/models/ja.yml
ja:
  activerecord:
    models:
      user: ユーザー
    attributes:
      user:
        name: 名前

↑このコードだと、user:が、

config/local/models/ja.yml
ja:
  activerecord:
    models:
      event: イベント
    attributes:
      event:
        name: イベント名
        place: 開催場所
        content: イベント内容

↑このコードだと、event:の部分が、テーブル名だと気づいた私は...

[Before]


[After]

この様に変更して...

サーバーを再起動した結果は、

無事、エラーメッセージを全て日本語化できました!!

結果

繰り返しになりますが、
「問題解決するには2つの記事を参考にすると解決できる!!!」はこれにて完了です。

...ご参考までに。