2012-10-25 18 views
2

根據年齡的不同,Rails 3應用程序中突出顯示錶行的最乾淨的方式是什麼?如果超過X天,突出顯示記錄的最簡單方法是?

<% @faults_open.each do |fault| %> 
    <tr> 
    <td><%= fault.name %></td> 
    <td><%= fault.faulttype %></td> 
    <td><%= fault.priority %></td> 
    <td><%= time_ago_in_words(fault.created_at) %> ago</td> 
    <td><%= link_to 'Show', fault %></td> 
    </tr> 
<% end %> 

我想要一個類適用於錶行中的指示其年齡,然後我可以使用CSS樣式。

<% @faults_open.each do |fault| %> 
    <tr <% if fault.created_at > Date.1.week.ago %>class="weekold"<% end %>> 
    <td><%= fault.name %></td> 
    <td><%= fault.faulttype %></td> 
    <td><%= fault.priority %></td> 
    <td><%= time_ago_in_words(fault.created_at) %> ago</td> 
    <td><%= link_to 'Show', fault %></td> 
    </tr> 
<% end %> 

類似上面的情況,但顯然將它們添加到視圖將是混亂。我打算加入一對夫婦的年齡,如:

weekold 
twoweeksold 
monthold 
sixmonthold 
yearold 
ancient 

我想象一個助手是最整潔的方式,但我的助手是如何工作的不確定。任何指針將不勝感激。

回答

2

我最近做了一些類似的事情,在行中添加了一個類名,這個行相當於它在幾周內的近似年齡,然後我用CSS來做實際的突出顯示。

爲什麼不使用輔助..(只是一個例子)

def highlight_age_class (created_at) 
    @@today ||= Date.today 
    num_weeks = ((@@today - created_at.to_date)/7).floor 
    class_name = "aged_#{num_weeks}_weeks" 
    num_weeks == 1 ? class_name.singularize : class_name 
end 

隨着你的HTML ..

<tr class="<%= highlight_age_class fault.created_at %>"> 

一些CSS聯合..

.aged_1_week 
.aged_1_weeks 
.aged_4_weeks 
.aged_24_weeks 
.aged_56_weeks 

etc 

你可以然後專注於擴展和優化輔助方法以適應年齡突出顯示。

+0

完美。太感謝了! – dannymcc

相關問題