rails で日本語化をしているのですが、attributesの日本語化が適用されません

投稿者: Anonymous

現在の出力画面

入力内容にエラーがあります
emailを入力してください
messageを入力してください

このように、他の日本語化には、成功したのですが、attributesの日本語化だけうまくいかず、困っています。何かアドバイスを頂けたら嬉しいです。

ja.yml

ja:
  activerecord:
    models:
      contact: お問い合わせ
    attributes:
      contact:
        name: 名前
        email: メールアドレス
        message: お問い合わせ内容

※contactモデル,データベースともに存在しています。

contacts/new.html.erb

<%= form_for(@contact) do |f| %>
  <% if @contact.errors.any? %>
    <strong>入力内容にエラーがあります</strong>
    <ul>
      <% @contact.errors.each do |attr, msg| %>
        <li><%= attr %><%= msg %></li>
      <% end %>
    </ul>
  <% end %>
<% end %>

※一部省略

application.rbに config.i18n.default_locale = :ja を設定済み

解決

キーが抜けてますね。以下のように足してみるとよいと思います。

ja:
  activerecord:
    models:
      contact: お問い合わせ
    attributes:
      contact:
        name: 名前
        email: メールアドレス
        message: お問い合わせ内容

参考
Rails国際化(I18n) API | Rails ガイド

追記

キーは足りていたということで、full_messagesメソッドを使うとよいと思います。

<%= form_for(@contact) do |f| %>
  <% if @contact.errors.any? %>
    <strong>入力内容にエラーがあります</strong>
    <ul>
      <% @contact.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
    </ul>
  <% end %>
<% end %>
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *