rails将表行提升到if语句的表格顶部

时间:2016-11-15 10:26:54

标签: html ruby-on-rails

所以我有这张桌子:

<% @extra_dates.each do |ed| %>
  <tr>
    <td><%= ed.date %></td>
    <td><%= ed.eventvenuename %></td>
    <td><%= link_to "Buy Now", "/events/" + ed.permalink, class: "btn btn-info" %></td>
    <% if ed.weburl1 || ed.weburl2 %>
      <td>
        <label class="annlabel" id="label">Cheapest</label>
      </td>
    <% end %>
  </tr>
<% end %>

现在,如果最便宜的标签显示我希望它位于表格的顶行。

1 个答案:

答案 0 :(得分:0)

您应该在控制器中对您的收藏进行排序:

@extra_dates = Event.where(eventname: @event.eventname).order("(COALESCE(weburl1, false) OR COALESCE(weburl2, false)) DESC")

这假设您正在使用PostgreSQL。

@extra_dates = Event.where(eventname: @event.eventname).sort_by {|e| (e.weburl1 ? 0 : 1) || (e.weburl2 ? 0 : 1)}

请记住,对于大型集合,第二种方法可能会慢得多。