2016-03-15 66 views
2

所以我想项目显示为Items剩余7天后该项目将被删除。我试过显示剩余时间与distance_of_time_in_words

<%= distance_of_time_in_words(item.created_at, item.created_at + 7.days) %> 

但我得到的是所有项目上的“7天”。任何人都可以简单地说明这种帮助方法是如何工

+1

所以,你需要的是从目前的时间差。所以你应该这样做:'distance_of_time_in_words(Time.now,item.created_at + 7.days)'。如果您尝试使用“2 - (2 + 7)”,它将始终返回“-7”并且永远不会改变。 – Deep

+0

感谢小比喻帮助加载非常感谢你! –

回答

5

the documentation让长相看什么distance_of_time_in_words做:

distance_of_time_in_words(FROM_TIME,TO_TIME = 0,选择= {})
报告之间的两地时间,日期或日期时间在时间​​的大致距离对象或整数作为秒。

因此它报告第一个参数和第二个参数的时间差。现在,你正在做的:

distance_of_time_in_words(item.created_at, item.created_at + 7.days) 

item.created_atitem.created_at加七天之间的差异是永远......7天;-)

我认为这是一件永远七点后删除天?在这种情况下,你想什么,是当前的日期和创建日期加上7天,你可以得到的区别:

distance_of_time_in_words(Time.now, item.created_at + 7.days) 
+0

是的,这就是我想要得到的,谢谢。处理日期对我来说有点难,所以这种方法让我的头发变得混乱起来。谢谢你的解释:) –

+0

@MiguelAngelQuintana是的,日期可以是尴尬的。但他们只是数字。许多计算机将日期存储为自1970年1月1日以来的秒数(目前为1458023724),并且当您说'+ 7.days'时,您实际上只是做了一个简单的加法:'1458023724 + 86400 * 7'一天有86400秒,这是一个有用的数字来记忆),仅此而已。显示为“Tue Mar 15 07:36:24 CET 2016”或“5天6小时”对于我们贫穷的人来说只是一种格式化的东西,就像'125秒'显示为'2:05'或'53.31 '作为'53,31' ... – Carpetsmoker