我在对象@nearest_vacation中的end_at和start_at之间计算天数时出现问题。 对象@nearest_vacation的结构:
[#<Vacation id: 11, start_at: "2016-04-30", end_at: "2016-05-02", free: false, reason: "Rocznica", person_id: 1>]
当我尝试@nearest_vacation.map{|x| x.end_at}
时,它会返回:[Mon, 02 May 2016]
这种日期格式不允许我这样做:(end_at - start_at).to_i
。如何正确获取值end_at和start_at来计算日期之间的差异?
答案 0 :(得分:2)
您可以使用mjd
方法:
Date.parse("2016-05-02").mjd - Date.parse("2016-04-20").mjd
=> 12 #days
答案 1 :(得分:2)
您的问题是您有一个Vacations
数组。
如果你真的需要一个阵列,没问题。
# notice the pluralised variable name
@nearest_vacations.map{|nv| (nv.end_at - nv.start_at)}
以上将返回一个日期不同的数组。
我怀疑这里发生的是你有阵列和实例混淆。这就是为什么您必须使用.map
从假期数组中获取end_at
值。
我认为这里真正的问题是你的nearest_vacation
是一个数组的原因。变量的名称及其未复数的事实告诉我,您不想要一个数组,而只需要一个实例。找到你的nearest_vacation
变量被设置为数组的位置,修复它,然后你的代码应该可以工作。