首页 > 解决方案 > 这句话有什么问题,我收到“无效日期”错误

问题描述

我正在构建一个时间线图表,所以当我为它制作一个数组时,出现了“无效日期”的问题,也许我搞砸了 .map,因为我不太了解 ruby

status_and_date = StatusVersion.where(requeat_id:812).pluck(status_id, :date).reverse
@requests_timeline = status_and_date.map do  |r,s| 
  s=s.to_s
  for i in 0..s.length-1

     label = r.to_s

     start_date = s[i].to_date

     end_date = s[i+1].to_date
     [label, start_date, end_date]

     end
  end
  @requests_timeline

标签: ruby-on-rails

解决方案


假设status_id是增量 1。我猜问题出在你的循环中,如果那样的i == s.length -1话, 你可以s[i+1]通过使用下面的代码修改循环来捕获错误以查看详细错误nilbegin ... rescue

for i in 0..s.length-1

   begin
     label = r.to_s

     start_date = s[i].to_date

     end_date = s[i+1].to_date
     [label, start_date, end_date]

   rescue
     puts "i - #{i}"
     puts "s[i] - #{s[i]}"
     puts "s[i+1] - #{s[i+1]}"
   end
end

推荐阅读