def short_remaining_time
difference = Time.diff(Time.now, created_at + 7.days, '%d - %H - %N')
# To display the short remaining time in an auction listing.
if difference[:day] == 0 and difference[:hour] >= 1
"#{difference[:minute]} minutos"
elsif difference[:day] == 0 and difference[:hour] >= 23
"#{difference[:hour]} horas"
else
if difference[:day] != 1
"#{difference[:day]} dias"
else
"#{difference[:day]} dia"
end
end
end
此方法位於我的Rails應用程序的auction.rb
模型中。如何讓這個有條件的實例化方法更符合Ruby的慣用方法?
在我的一個觀點中,我列出了系統中的所有拍賣,並且還顯示了在拍賣結束之前還剩多少時間。
根據時間的長短,我會顯示days
hours
或minutes
。
該代碼工作正常,只是看起來感覺非常笨重。有沒有辦法讓這一點變得容易一些?
我得到這個錯誤:'未繳的隱式轉換成String'。如果'difference [:day]'不是1,它試圖將'nil'轉換成字符串。 – sergserg
@Serg,我更新它來處理'nil'。 – lurker