time_ago_in_words => “在{{count}}天。”?

时间:2010-12-02 00:00:41

标签: ruby-on-rails datetime count

我有一个非常奇怪的错误。在我的代码中,我有<%= time_ago_in_words(game.created_at) %>

它在本地和我的登台服务器上运行,但不在我的生产服务器上:

示例:http://hockey-community.com/games/show/45

我收到“in {{count}} days.

奇怪的是,如果返回的数字是1,它就可以了。 (例如:1 hour ago or 1 day ago)。

任何想法都会非常有用。 THKS

4 个答案:

答案 0 :(得分:13)

Rails在帮助程序中使用了一些弃用的语法,然后在最新的Ruby版本中删除了。如果您使用的是Heroku,请尝试告诉您的生产实例使用Rails 2.3.9。否则你也可以尝试降级Ruby。

查看更改日志: http://weblog.rubyonrails.org/2010/9/4/ruby-on-rails-2-3-9-released

  

将i18n命名插值语法从已弃用的Hello {{name}} 更改为1.9-native Hello %{name}

这看起来会解决您的问题。

答案 1 :(得分:2)

听起来我觉得你没有像开发中那样拥有相同版本的Ruby in Production。我个人在开发和控制台中仍然使用Ruby 1.8.7,当我使用time_ago_in_words时,我不断收到以下消息:

  

不推荐使用I18n消息中的{{key}}插值语法。请改用%{key}。

现在关于弃用的这条消息不是来自Rails,而是来自Ruby。由于time_ago_in_words是Rails助手,因此Rails中的这个功能似乎与已删除它的Ruby的更高版本不兼容。

因此,除非你手动想要以某种方式修补实际的帮助(我不推荐它),你可以升级Rails或降级Ruby以使它们兼容。

答案 2 :(得分:2)

最近添加i18n gem之后我遇到了同样的问题。我正在进行升级Rails目前不可行的项目。阅读完这篇文章并几乎扯掉time_ago_in_words后,我发现了几个类似的帖子。

按照此处的建议将http://gist.github.com/rails/rails/blob/master/actionpack/lib/action_view/locale/en.yml复制到我的config / locales / en.yml中:time_ago_in_words issue效果很好。请注意,yml对于空白区域非常挑剔。

答案 3 :(得分:0)

这发生在我身上。

我尝试从

插入“datetime:”部分

https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en-US.yml

进入我自己的en.yml,希望覆盖任何奇怪的东西。但后来我的应用程序没有启动,它在插入“datetime:”的位置上完全抱怨语法错误。 (当我看起来我无法用单眼找到那个未出现的语法错误。)