我试图只显示我的数据库中日期从今天开始的事件。我表中的日期列是“开始日期”。在我的事件 Controller 中,我有:
if @events.start_date >= Date.today
@events = Event.order('start_date ASC')
end
我不断在带有“if”语句的行中收到错误“undefined method `start_date' for nil:NilClass”。 我敢肯定,当我尝试和错误时,我也会产生句法/语法问题。我忽略了什么?
最佳答案
它抛出一个 NoMethodError
因为 @events
的值没有被定义或者它的值为 nil
:
defined?(@events)
# nil
@events.start_at
# NoMethodError: undefined method `start_at' for nil:NilClass
nil.start_at
# NoMethodError: undefined method `start_at' for nil:NilClass
为此,您可以使用 where
来过滤 start_date
等于或大于当前时间戳的那些行:
@events = Event.where('start_date >= CURRENT_TIMESTAMP').order(start_date: :asc)
关于ruby-on-rails - 如果日期等于今天或将来的日期,则从 postgres 呈现事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58984548/