我正在尝试突出循环中的最后一个条目。但是下面的代码为每个表行指定了id =“highlight”:(
<% @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>
....
有什么想法吗?谢谢你们!
答案 0 :(得分: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
答案 1 :(得分: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 %>
答案 2 :(得分:1)
检查您使用=
标志的方式。
请注意,相等(==
)与赋值(=
)不同。
您需要的是此处的等号(==
)。这样:
<% if sale.created_at == Sale.last %>id="highlight"<% end%>
而不是:
<% if sale.created_at = Sale.last %>id="highlight"<% end%>
你正在做的事。