【问题标题】:Why doesn't Heroku like strftime? [closed]为什么 Heroku 不喜欢 strftime? [关闭]
【发布时间】:2013-05-19 14:33:44
【问题描述】:

Heroku/PostgreSQL 似乎不支持strftime。所以,如果我想转换类似的东西:

@event.date_start.strftime("%B #{@event.date_start.day.ordinalize}")

不使用strftime有哪些选项?


编辑:

这是我的 Heroku 错误日志。它在strftime 上磕磕绊绊,它在我的开发环境中的 SQLite 中运行良好:

2013-05-19T15:51:07.001968+00:00 app[web.1]: ActionView::Template::Error (undefined method `strftime' for nil:NilClass):

【问题讨论】:

  • 您拥有什么以及输出的外观如何,如您所愿。举个例子。
  • 我不认为它是 Heroku 或 postgres,当我尝试使用 Heroku 命令行时,相同的代码对我有效。
  • 你确定@event.date_time.respond_to? :strftime 和@event.date_start.respond_to? :day(意思是:你没有覆盖你的属性getter)?
  • 我已将 heroku 日志错误添加到我的帖子中。

标签: ruby-on-rails ruby heroku strftime


【解决方案1】:

问题是@event 没有date_start:

2013-05-19T15:51:07.001968+00:00 app[web.1]: ActionView::Template::Error (undefined method `strftime' for nil:NilClass)

上述错误意味着strftime 正在被nil 对象调用,在您的情况下是@event 的date_start。

如果您的事件记录应始终包含date_start,则更新或删除有问题的记录。
否则你可以使用try:

@event.date_start.try(:strftime, "%B #{@event.date_start.day.ordinalize}")

【讨论】:

  • 嗯,好的。然而,在我推送到 Heroku 之前,我无法弄清楚为什么 strftime 设置得很好(如果我在 Ruby 控制台中运行相同的代码就可以了)。
  • 这与保存在数据库中的记录有关。因此,在您的开发数据库上,您的记录很好,但在 Heroku 上,您的一个或多个事件记录没有正确保存该字段。运行heroku run rails console和Event.where("date_start is null")查找不良记录。
  • 谢谢 mind.blank - 我有一个记录(第一个)没有数据,它把其余的都扔掉了!
猜你喜欢
  • 2015-08-06
  • 2020-10-13
  • 2020-02-22
  • 2011-01-03
  • 2021-10-15
  • 2016-11-04
  • 2012-10-25
  • 1970-01-01
  • 2010-09-14
相关资源
最近更新 更多