LoginSignup
5
2

More than 3 years have passed since last update.

[Rails]Formオブジェクト使用時にエラーメッセージが日本語化されない[locale]

Posted at

概要

オリジナルアプリ制作時、formオブジェクトを利用した箇所のエラーメッセージだけ日本語化されなかったのでその備忘録を。

https://qiita.com/rytr823/items/e9fbbb16884b6f52d463
調べていたら上記の方とほとんど同じでした。感謝。

前提

ja.ymlファイルの作成までは終わっている

環境

ruby 2.6.5
rails 6.0.0
gem 'rails-i18n'導入済み

formオブジェクトの配置場所

app/forms/guest_data.rb

EZ図

この図のguestsテーブルとbathsテーブルとdrinksテーブルの3つをformオブジェクトを使用して保存しようとしていた。

兵声援EZ図.png

内容

ja.ymlに記述しても日本語化が適用されない

間違ってた記述

config/locales/ja.yml
ja:
  activerecord:
    attributes:
      guest:
       first_name: 苗字(全角)
       last_name: 名前(全角)
       first_name_kana: 苗字(カタカナ)
       last_name_kana: 名前(カタカナ)
       gender_id: 性別
       visit1_id: 1回目の利用日
       visit2_id: 2回目の利用日
       description: 利用者の詳細
      bath:
       bathing_id: 入浴の種類
       infection_id: 対応が必要な感染症
       timing_id: 入浴の順番
       remark_bath: 入浴の備考
      drink:
       drink_type_id: 飲み物の種類
       thickness_id: とろみの量
       warm: 温めるか
       diabetes: 糖尿病

正しい記述

config/locales/ja.yml
ja:
  activemodel:
    attributes:
      guest_data:
        first_name: 苗字(全角)
        last_name: 名前(全角)
        first_name_kana: 苗字(カタカナ)
        last_name_kana: 名前(カタカナ)
        gender_id: 性別
        visit1_id: 1回目の利用日
        visit2_id: 2回目の利用日
        description: 利用者の詳細
        bathing_id: 入浴の種類
        infection_id: 対応が必要な感染症の有無
        timing_id: 入浴の順番
        remark_bath: 入浴の備考
        drink_type_id: 飲み物の種類
        thickness_id: とろみの量
        warm: 温めるか
        diabetes: 糖尿病

原因

記述をしたapp/forms/guest_data.rbはactiverecordではなくactivemodelを継承していたため。

参考記事

https://qiita.com/rytr823/items/e9fbbb16884b6f52d463
https://qiita.com/jacoyutorius/items/e0d2cfdb61ff4c4fd1e7
https://qiita.com/astap/items/c07e0b08273fd97aaa91

5
2
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
5
2