2013-06-27 41 views
0

現在我有一個函數time_since如何顯示在Rails中更新的時間?

def time_since 
    seconds = Time.now - self.updated_at 
    if seconds < 15 
     display = "Just Now" 
    elsif seconds < 59.5 #less than 59.5 seconds 
     display = seconds.round(0).to_s + "s" 
    elsif seconds < (3600-30) #less than 59.5 minutes 
     display = (seconds/60).round(0).to_s + "m" 
    elsif seconds < (86400-1800)  #less than 23.5 hours 
     display = (seconds/3600).round(0).to_s + "h" 
    elsif seconds < 86400*2 #less than 2 days 
     display = "Yesterday" 
    elsif seconds < 86400*7 #less than 1 week 
     display = self.updated_at.strftime("%A") 
    else      #more than 1 week 
     mon = self.updated_at.month 
     day = self.updated_at.day.to_s 
     display = day + convert_month_number_to_month_name(mon).to_s 
    end 

    return display 
end 

而且我希望能夠懸停在這一點,並把它顯示確切的updated_at時間戳。有沒有我可以輕鬆使用的寶石來做到這一點?

+1

http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-distance_of_time_in_words –

+0

@anonymousxxx連接的東西很好,這基本上是你已經在那裏實施。但更重要的是,你的問題是如何顯示一個文本,但添加懸停文本?有一些寶石/庫可以爲它提供奇特的工具,但是你也可以查看一些基本的javascript來獲得懸停事件,或者使用一個'title',這個'title'通常顯示在網頁瀏覽器上。 – MrDanA

+0

這一切都很棒,但現在我得到一個錯誤:未定義的方法'distance_of_time_in_words'。我是否需要包含新的東西來訪問該方法 – GoodLuckGanesh

回答

0

好的!最後我用這樣的:

<span title=<%= Object.updated_at.localtime.asctime.split.join('-') %>> 
    <%= distance_of_time_in_words_to_now(Object.updated_at, include_seconds = true) %> 
</span> 

我不能拿到冠軍,以顯示出比當時的第一個詞更使我與破折號(甚至當我使用的strftime)加入。這是功能,我會清理它以後

相關問題