2016-03-15 2 views
2

Так что я хочу, чтобы элемент отображался на Items через 7 дней, элемент будет удален. ive попробовалВремя показа, оставшееся с 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, опции = {})
Отчеты приблизительное расстояние во времени между двумя Время, дата или DateTime объектов или целых чисел в секундах.

Таким образом, он сообщает разницу во времени первого аргумента и второго аргумента. Теперь, вы делаете:

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

Разница между item.created_at и item.created_at плюс семь дней всегда ... семь дней ;-)

Я предполагаю, что это то, что всегда будет удален после семи дней? В таком случае, что вы хотите , разница между текущей датой и датой создания плюс семь дней, которые вы можете получить с:

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

Да, это то, к чему я пытался добраться, спасибо. Работа с датами немного сложнее для меня, так что этот метод с ума сводит мои волосы. спасибо за объяснение :) –

+0

@MiguelAngelQuintana Да, даты могут быть неудобными. Но они просто цифры. Многие компьютеры хранят дату как количество секунд с 1 января 1970 года (сейчас это 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