2015-12-07 64 views
0

我試圖突出顯示循環內的最後一條記錄。但是,下面的代碼分配ID = 「亮點」 的每一個錶行:(Rails:突出顯示循環內的最後一條記錄

<% @sales.order("created_at desc").each do |sale| %> 
    <tr <% if sale.created_at = Sale.last %>id="highlight"<% end%> > 
     <td><%= sale.user.name %></td> 
     <td><%= sale.product %></td> 
    .... 

任何想法?謝謝你們!

回答

3
if sale.created_at = Sale.last 

應該

if sale.created_at == Sale.last.created_at 

另外,我猜以下會更好,因爲它消除了額外的查詢Sale.last

<% @sales.order("created_at desc").each_with_index do |sale, idx| %> 
    <tr <% if idx == @sales.length - 1 %>id="highlight"<% end%> > 
    <td><%= sale.user.name %></td> 
    <td><%= sale.product %></td> 
.... 

HTH

+0

如果sale.created_at == Sale.last.created_at爲我做了。謝謝! – CottonEyeJoe

+0

很高興我能提供幫助,但我強烈建議不要這樣做。您應該使用'each_with_index'方法來獲取最後(或任何)記錄。 –

+0

'each_with_index'不起作用,因爲它突出顯示最舊的表格行,而不是最新的/最新的表格行。 – CottonEyeJoe

1

檢查您使用=標誌的方式。

請注意,等號(==)與賦值(=)不同。

你需要的是這裏的等號(==)。所以:

<% if sale.created_at == Sale.last %>id="highlight"<% end%> 

,而不是:

<% if sale.created_at = Sale.last %>id="highlight"<% end%> 

,你在做什麼。

2

要獲取的行數(無需額外的數據庫查詢),你可以使用: @ sales.length

然後使用each_with_index您的循環:

<% @sales.order("created_at desc").each_with_index do |sale, i| %> 
    <tr <% if @sales.length == i + 1 %>id="highlight"<% end%> > 
    <td><%= sale.user.name %></td> 
    <td><%= sale.product %></td> 
    </tr> 
<% end %> 
相關問題