Вычисление точной продолжительности времени из столбца DateTime в Postgres с использованием Rails - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь получить более точный вывод, чем «около 2 часов» для продолжительности времени.

В настоящее время мы используем time_ago_in_words

Это похоже на приведенную ниже функцию в.erb

Duration: <%= time_ago_in_words(@sitrep.incident.created_at) %>

# I found the gem `dotiw` which lets me use:
distance_of_time_in_words(@sitrep.incident.created_at)
# However, there is an error and I can't get either to work in irb

Это вывод моей консоли при попытке обоих.Приветствуется вся помощь

[1] pry(main)> include ActionView::Helpers
=> Object
[2] pry(main)> t = Sitrep.last.incident.created_at

# redacted output    

=> Wed, 28 Nov 2018 21:47:45 UTC +00:00
[3] pry(main)> t
=> Wed, 28 Nov 2018 21:47:45 UTC +00:00
[4] pry(main)> time_ago_in_words(t)
=> "<span class=\"translation_missing\" title=\"translation missing: en.weeks\">Weeks</span>, <span class=\"translation_missing\" title=\"translation missing: en.days\">Days</span>, <span class=\"translation_missing\" title=\"translation missing: en.hours\">Hours</span>, and <span class=\"translation_missing\" title=\"translation missing: en.minutes\">Minutes</span>"
[5] pry(main)> distance_of_time_in_words(t)
NoMethodError: undefined method `seconds' for Wed, 28 Nov 2018 21:47:45 UTC +00:00:Time
Did you mean?  send
Did you mean?  send
from /Users/mmowris/.rbenv/versions/2.3.8/lib/ruby/gems/2.3.0/gems/activesupport-4.2.7.1/lib/active_support/time_with_zone.rb:371:in `method_missing'
[6] pry(main)>

Первый метод time_ago_in_words работает для нашего приложения rails.Этот файл .erb отправляет электронное письмо, и результат будет выглядеть примерно так:

Duration: about 2 hours

Есть идеи, как поступить?Почему это работает в нашем проекте рельсов, а не IRB?Почему я не могу заставить Dtiw работать с одним и тем же вводом?Почему я не могу заставить taiw работать с тем же входом, который работает в производстве?

Спасибо!

1 Ответ

0 голосов
/ 11 декабря 2018

использовать помощника вместо того, чтобы включать помощников вручную

 > helper.time_ago_in_words(2.hours.ago, true)
 => "2 hours" 

 > helper.time_ago_in_words((2.hours.ago + 5.seconds), true)
 => "1 hour, 59 minutes, and 55 seconds" 
...