Я работаю с методом ApplicationHelper, который переводит объекты времени в «гуманизированные» измерения времени, на мой взгляд:
def humanize_seconds s
if s.nil?
return ""
end
if s > 0
m = (s / 60).floor
s = s % 60
h = (m / 60).floor
m = m % 60
d = (h / 24).floor
h = h % 24
w = (d / 7).floor
d = d % 7
y = (w / 52).floor
w = w % 52
output = pluralize(s, "second") if (s > 0)
output = pluralize(m, "minute") + ", " + pluralize(s, "second") if (m > 0)
output = pluralize(h, "hour") + ", " + pluralize(m, "minute") if (h > 0)
output = pluralize(d, "day") + ", " + pluralize(h, "hour") if (d > 0)
output = pluralize(w, "week") + ", " + pluralize(d, "day") if (w > 0)
output = pluralize(y, "years") + ", " + pluralize(w, "week") if (y > 0)
return output
else
return pluralize(s, "second")
end
end
Это работает отлично, но у меня возникает проблема при переводе концаРезультат метода, предназначенного для перечисления временных интервалов в указанном месте:
RFIDTag.rb:
def time_since_first_tag_use
product_selections.none? ? "N/A" : Time.now - product_selections.order(staged_at: :asc).first.staged_at
end
Product.rb:
def first_staged_tag
rfid_tags.map { |rfid| rfid.time_since_first_tag_use.to_i }.join(", ")
end
Просмотр: (html.erb):
Размещение значения там работает и перечисляет значения как first_staged_tag
, но только в секундах:
<% @products.order(created_at: :desc).each do |product| %>
<td><%= product.name %></td> #Single product name
<td><%= product.first_staged_tag %></td> list, i.e. #40110596, 40110596, 39680413, 39680324
<%end%>
При преобразовании вОбычный способ <td><%= humanize_seconds(product.first_staged_tag) %></td>
, который работал для отдельных значений, выдает эту ошибку:
comparison of String with 0 failed
Extracted source (around line #88):
86 return ""
87 end
88 if s > 0
89 m = (s / 60).floor
90 s = s % 60
91 h = (m / 60).floor
Между тем, попытка применить этот метод в методе Product Model first_staged_tag
приводит к ошибке NoMethod на humanize_seconds
.Как я могу получить свой список раз, чтобы распознать преобразование времени?
Итерация всего, что попробовал, есть в комментариях.