0

在比较 ruby​​ on rails 中的日期时,我遇到了一个奇怪的问题。

这就是我想要做的。我已经解析了一个文件并选择了一个日期到一个变量@timeinFile中。我将此值与created_at我的User. 这是代码:

@date=User.last.created_at
@arr.each do |i| 
    j=i.partition('(')[2]  
    @timeinFile=j.partition(')')[0].to_datetime
    if @date < @timeinFile    #Error: undefined method `to_datetime' for nil:NilClass
            @val='true'
    end
end

当我单独评论 if 语句并粘贴值时,我得到以下输出

<p> <%= @date %> </p> ----------> 2013-08-05 09:16:33 UTC 

<p><%= @timeinFile.to_time %></p> -------------> 2012-10-02 12:00:00 UTC

任何人请告诉我我做错了什么。

编辑

<a href="http://www.cpsc.gov/en/Recalls/2013/Fitness-Anywhere-Recalls-Early-Model-Suspension-Trainer-Devices-Due-to-Fall-Hazard/" target="_blank">Fitness Anywhere Recalls Early Model Suspension Trainer Devices Due to Fall Hazard</a> (Tue, 02 Oct 2012 12:00:00 GMT) Fitness Anywhere has received 570 reports of the strap length adjustment buckles breaking with 13 reports of injuries. TRX suspension trainers sold from 2006 through 2009. </p> </body> </html> 

这是我在@arr 中遇到的问题。下一步是使用分区,(然后使用)以获取圆括号中的日期...

4

1 回答 1

3

那么,你为什么要@timeinFile在你的代码和@timeonsite测试中使用呢?

#Error: undefined method `to_datetime' for nil:NilClass

基本上意味着你在一个对象上调用一个方法nil,我觉得错误是在if语句之​​前的那一行触发的。

当你放这张支票时会发生什么?

unless j.partition(')')[0].nil?
  @timeinFile=j.partition(')')[0].to_datetime
else
  @timeinFile = DateTime.now
end

如果它没有给你一个错误,你可以去找出为什么这个值是nil.

于 2013-08-27T08:44:51.173 回答