0

Rails 3.2.3のほとんどのモデルのエラーメッセージを表示するために、次のパーシャルを使用しています。

# _error_messages.html.erb

<% if object.errors.any? %>
<div id="error_explanation">
    <h3><%= pluralize(object.errors.count, "error") %>
    prohibited this <%= object.class.to_s.underscore.humanize.downcase %> from being saved:</h3>        
    <p>There were problems with the following fields:</p>
    <ul>
        <% object.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
        <% end %>
    </ul>
</div>
<% end %>

これは、を使用してアプリケーションをローカライズすることを決定するまで、うまく機能しI18nました。

de.yml私はこれを含むドイツ語コンテンツ用の新しいファイルを作成しました(他の多くのものの中でも):

# de.yml

errors: &errors
  format: ! '%{attribute} %{message}'
  messages:
    blank: muss ausgefüllt werden
  template:
    body: ! 'Bitte überprüfen Sie die folgenden Felder:'
    header:
      one: ! 'Konnte %{model} nicht speichern: ein Fehler.'
      other: ! 'Konnte %{model} nicht speichern: %{count} Fehler.'

etc. etc. etc.

エラーメッセージでこのコンテンツをどのように使用できますか?

特に線は<%= object.class.to_s.underscore.humanize.downcase %>私を困惑させます。私は次のようなことを試みまし<%= t 'activerecord.errors.template.header', :model => object.model_name.human %>たが、運がありませんでした。

誰か助けてもらえますか?

ローカリゼーションに関するRailsガイドをすでに3回読みましたが、ここで立ち往生しています。

助けてくれてありがとう!

4

2 に答える 2

0

まず、次のようにロケールを設定する必要があります。

application.rb

config.i18n.default_locale = :de

次に、ロケールファイルは次のようになります。

de.yml

de:
  activerecord:
    models:
      order: Заказ
    attributes:
      order:
        link: Ссылка на модель часов
        name: Имя
        phone: Телефон
        accept_message: Комментарий к заказу
        decline_message: Причина отказа
        finish_message: Комментарий к заказу
    errors:
      models:
        order:
          attributes:
            link:
              blank: не может быть пустой
            phone:
              invalid: должен содержать только цифры. Пример: 9208003020 или 2716070.
              blank: не может быть пустым
            name:
              blank: не может быть пустым
            decline_message:
              blank: не может быть пустой
于 2013-01-26T11:40:44.973 に答える
0

OK、このスレッドのおかげで、今回は自分で答えを見つけました。

_error_messages.html.rbパーシャルを次のように変更しただけです。

<% if object.errors.any? %>
<div id="error_explanation">
    <h3><%= t('errors.template.header', :model => object.class.model_name.human, :count => object.errors.count) %></h3>
    <p><%= t('errors.template.body') %></p>
    <ul>
        <% object.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
        <% end %>
    </ul>
</div>
<% end %>

今それは動作し、私は幸せです:-)

于 2013-01-26T13:24:35.793 に答える