0

Rails 3 アプリケーションを翻訳しようとしています。http://guides.rubyonrails.org/i18n.html#adding-date-time-formats で入門書を読み、その後、対応する yml ファイルをhttps://github.comからダウンロードしました。 /svenfuchs/rails-i18n/tree/master/rails/locale (de.yml私の場合)。

私の意見の1つに、このコードがありました(some_model#index)...

<td><%= time_ago_in_words(some_model.created_at) %></td>

~に着替えました~

<td><%=l time_ago_in_words(some_model.created_at) %></td>.

残念ながら、これにより次のエラーが発生します。

Object must be a Date, DateTime or Time object. "etwa ein Monat" given.

これが失敗する理由は何ですか?列は、created_at標準の Rails スキャフォールディングを介してデータベースに作成されています (データベースは mysql2 gem を使用した mysql です)。

time_ago_in_wordsコードからヘルパーを削除すると...

<td><%=l some_model.created_at %></td>.

...翻訳は機能します-しかし、もちろん、日時は私の<td>.

distance_in_wordsのセクションを複製してde.yml名前を変更しようとしましtime_ago_in_wordsたが、これも機能しませんでした。

明らかな何かが欠けていますか?

4

1 に答える 1

1

OK、ここには 2 つの異なる方法があります。

  1. このlメソッドは、Date、Time、または DateTime オブジェクトを受け取り、I18n ルールに基づいてフォーマットされたバージョンを返します。

  2. これtime_ago_wordsは同じ引数を取り、I18n を使用してフォーマットされた文字列を吐き出します。

あなたの例では、両方を使用しようとしています! 簡単に言えば、必要なのは<%= time_ago_in_words(some_model.created_at) %>.

于 2012-05-30T09:34:53.693 に答える