0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsのエラーメッセージの階層、インデントの書き方

Posted at

##やりたいこと
・ja.ymlファイルを編集してエラーメッセージを日本語化したい。
・カラム名は日本語に変更できたので、エラーメッセージのkeyを編集して
 完全な日本語にしたい

##エラー内容
・I18n::InvalidLocaleData in Topics#new
image.png

##原因
・ja.ymlファイルのインデントがあっていない
・そもそもファイルが読み込めていない
ちなみにこの段階でのymlファイルはこんな感じ


ja:
activerecord:
models:
user:
attributes:
user:
name: 名前
email: メールアドレス
user_area: 勤務地
user_job: 役職
school_year: 学年
password: パスワード
topic:
images: 画像または動画
description: 本文
errors:
messages:
extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"

##解決策
###1インデントを修正してみる
ymlファイルはスペース一つ間違っているだけでも読み込んでくれないデリケートなものなので、コメントアウトで消すのではなくしっかりと消しましょう。
19行目が怪しいので消してみます。すると…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2301963/9ca16185-af52-b533-f116-f6702b275787.png)

またもやエラー。しかし、内容が変わってる。
expected end of...
あ。ダブルクオーテーションで囲ってなかった。。
単なるスペルミス。

extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"
上記のように修正。

すると、エラーは改善されました。そして実際に投稿画面でこのメッセージが表示されるかテストしてみる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2301963/90c926d7-995e-f046-b8c2-edd9ef3c6a16.png)

おかしいっすね。

ただ、このエラー文を見てみると、

画像または動画translation missing: ja.errors.messages.extension_whitelist_error

とあります。
これは、ja → errors → messages → extension_whitelist_error
の階層になっていないので翻訳データが見つかりませんよと言っている。


ja:
activerecord:
models:
user:
attributes:
user:
name: 名前
email: メールアドレス
user_area: 勤務地
user_job: 役職
school_year: 学年
password: パスワード
topic:
images: 画像または動画
description: 本文
errors:
messages:
extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"

この表記だとactiverecord:の中にerror:が入ってしまっている。


なのでインデントを修正。

ja:
activerecord:
models:
user:
attributes:
user:
name: 名前
email: メールアドレス
user_area: 勤務地
user_job: 役職
school_year: 学年
password: パスワード
topic:
images: 画像または動画
description: 本文
errors:
messages:
extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"

分かりづらいかもしれませんが、errors:以下の3行のインデントを1つ上げました。

もう一度テスト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2301963/258bb95d-cb45-29f5-6797-97a48629df79.png)

上手くいきました!
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?