Rails 3& i18n:“对象必须是Date,DateTime或Time对象”错误

时间:2012-05-29 07:42:37

标签: ruby-on-rails-3 internationalization

我正在尝试翻译我的Rails 3应用程序,阅读http://guides.rubyonrails.org/i18n.html#adding-date-time-formats上的初级读本,然后从https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale(我的情况下为de.yml)下载相应的yml文件。

在我的一个观点中,我有这段代码(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的{​​{1}}部分,并将其重命名为de.yml,但这也不起作用。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

好的,这里有两种不同的方法:

  1. l方法采用Date,Time或DateTime对象,并根据您的I18n规则返回格式化版本。

  2. time_ago_words采用相同的参数,并使用I18n吐出格式化的字符串。

  3. 在您的示例中,您尝试使用两者!简而言之,您所需要的只是<%= time_ago_in_words(some_model.created_at) %>