【问题标题】:Tidiest way of highlighting record if older than X days?如果超过 X 天,突出显示记录的最简洁方式?
【发布时间】:2012-10-15 19:26:56
【问题描述】:

在 Rails 3 应用程序中根据年龄突出显示表格行的最简洁的 DRY 方式是什么?

<% @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

我认为助手是最整洁的方式,但我不确定助手将如何工作。任何指针将不胜感激。

【问题讨论】:

    标签: ruby-on-rails-3 datetime view dry helper


    【解决方案1】:

    我最近做了类似的事情,在行中添加了一个类名,对应于它的大致年龄(以周为单位),然后我使用 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
    

    然后,您可以专注于扩展和优化用于年龄突出显示的辅助方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      相关资源
      最近更新 更多