Company(会社)とOffice(事業所)の1対多の関係モデルでnested_formでバリデーションした際、Office(事業所)のエラーメッセージが正しく表示されない事態が発生。以下の方法で解決したのでメモしておきます。
1対多のモデルのバリデーションエラーメッセージを日本語で表示する
Viewで以下のようにバリデーションエラーメッセージを表示。
1 2 3 4 5 | <% if @company.errors.present? %> <% @company&.errors&.full_messages&.each do |msg| %> <p><%= msg %></p> <% end %> <% end %> |
しかし、Office(事業所)のエラーメッセージがネストされているため正しく表示されない。
1 2 | 会社名を入力してください Company offices office nameを入力してください |
ja.ymlファイルにネストしたモデルを/で分けて以下のように追記することで解決。多のOffice(事業所)は複数形になるので注意が必要です。
1 2 3 4 5 6 7 8 9 10 11 | --- ja: activerecord: &activerecord attributes: company: company_name: 会社名 office: office_name: 事業所名 company/offices: office_name: 事業所名 |
1 2 | 会社名を入力してください 事業所名を入力してください |