【发布时间】:2016-12-04 09:06:23
【问题描述】:
我有一个图像数组,它们在一个名为 categories_images 的数组中都有特定的类别。图像有一个 start_at 字段,有时为 nil,有时在其中包含 DateTime。我希望那些在当前 DateTime 之前开始的 DateTime 出现在我的页面上。
我写了以下代码:
def now
categories_images.select { |image| image['start_at'] }
end
这给了我所有 start_at 没有 nil 的图像。
所以我问:
def now
categories_images.select { |image| image['start_at'] < DateTime.now }
end
认为它会给我那些相同的图像,除了那些没有早于“现在”的 start_at 日期的图像。相反,它给了我:
undefined method `<' for nil:NilClass
我做错了什么?我知道这可能是 ruby 102 的东西,但我是一个有梦想的新面孔的孩子,需要一些帮助。是不是说 DateTime.now 是 nil 所以它不能检查它?如果是这样,为什么,这不是适用于 DateTime 的合法方法吗?
任何帮助将不胜感激。
【问题讨论】:
-
您可以将其更改为在同一块中使用两个条件。
categories_images.select { |image| image['start_at'] && image['start_at'] < DateTime.now }这表示所有有 start at 以及 start_at 小于现在的图像。 -
@engineersmnky 酷,这工作。谢谢!现在我看到了,我不知道我以前是怎么做到的。
标签: ruby-on-rails arrays ruby postgresql datetime