2016-01-06 34 views
0

我可以在視圖這樣對標籤添加到新聞報道:Rails視圖段依賴於udpated_at/created_at時間嗎?

<% if article.urgency == 'majorbreaking' && article.updated_at.today? %> 
    <span class="breaking"> 
… 

它的作品了與「今天」的方塊,但我要如何做同樣的事情(說)「最近六小時「(在視圖中,我知道如何使用範圍和控制器來選擇文章,但是這是在選擇之後,僅用於視圖)。

謝謝。

回答

2

因爲這是選擇後,我們就可以簡單地使用像這樣:

article.updated_at >= 6.hours.ago 

簡單&漂亮

+0

謝謝Hieu,這很有效。那是我遇到的一點麻煩。 –

1

如果你想更換at_today與過去6小時的使用時間:

<% if article.urgency == 'majorbreaking' && article.updated_at > (DateTime.now - 6.hours) %> 
    <span class="breaking"> 
… 

退房時間傭工

http://api.rubyonrails.org/classes/DateTime.html http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html http://api.rubyonrails.org/classes/ActiveSupport/Testing/TimeHelpers.html

+0

我將有一個讀那些再次。我之前嘗試過,但沒有點擊。謝謝。 –

2

你可以儘量減少硬編碼的邏輯,你的看法是處理和潛在乾涸你的代碼(如果事實上你要處理多個時間跨度)在您的文章模型創建的方法。例如:

class Article < ActiveRecord::Base 
    def recent?(hours_ago=24) 
    created_at >= hours_ago.hours.ago 
    end 
end 

然後在您的視圖:

在過去的一天之內:

<% if article.urgency == 'majorbreaking' && article.recent? %> 
    <span class="breaking"> 

在過去的6小時內:

<% if article.urgency == 'majorbreaking' && article.recent?(6) %> 
    <span class="breaking"> 
+0

我認爲它必須是'hours_ago.ago' – alex88

+0

是的!謝謝...現在修復。 – Sia