time_ago_in_words => "через {{count}} дней."? - PullRequest
10 голосов
/ 02 декабря 2010

У меня очень странная ошибка. В моем коде у меня есть <%= 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 ]

13 голосов
/ 08 декабря 2010

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-родному Hello % {name} .

Похоже, это решит вашу проблему.

2 голосов
/ 30 марта 2011

У меня была такая же проблема после недавнего добавления гема i18n. Я нахожусь в проекте, где обновление 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 проблема отлично работала. Просто знайте, что yml очень привередлив в отношении пробелов.

2 голосов
/ 08 декабря 2010

Мне кажется, что у вас не такая же версия Ruby в Production, как в Development.Лично у меня все еще есть Ruby 1.8.7 в моей разработке и в консоли, я постоянно получаю следующее сообщение, когда использую time_ago_in_words:

Синтаксис интерполяции {{key}} в сообщениях I18n устарел.Пожалуйста, используйте вместо этого% {key}.

Теперь это сообщение об устаревших сообщениях приходит не от Rails, а от Ruby.А поскольку time_ago_in_words является помощником Rails, кажется, что эта функция в Rails несовместима с более поздними версиями Ruby, где она была удалена.

Так что, если вы не хотите вручную каким-то образом исправлять фактический помощник(Я бы не советовал), вы можете либо обновить Rails, либо понизить Ruby, чтобы они были совместимы.

0 голосов
/ 08 декабря 2010

Это происходит со мной.

Я попытался вставить раздел "datetime:" из

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

в мой собственный en.yml, надеясь переопределить любые странные вещи.Но тогда мое приложение не запускается, и оно жалуется на синтаксическую ошибку точно на месте вставки «datetime:».(когда я смотрю, я не могу обнаружить эту несуществующую синтаксическую ошибку одним глазом).

...