Rails 3应用程序中根据其年龄突出显示表行的最干燥方式是什么?
<% @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
我认为助手是最整洁的方式,但我不确定助手是如何工作的。任何指针都会受到赞赏。
答案 0 :(得分: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
然后,您可以专注于扩展和优化您的助手方法以突出年龄。