按列和行Rails对表进行排序

时间:2012-11-03 05:23:53

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

在这里,我想建立一个每周计划员,我将在后面插入计划。

我的列按星期几排序。(星期一,星期二......) 现在,我希望按时间对行进行排序。

但是,我的代码如下。对于每一列,它循环的次数与我的时间段中的项目数相同。

如果你可以给我一些关于如何修复它的指导,以便每个时间段只在整个表格中出现一次,我将不胜感激。

代码

<table class="Time Table">
  <tr>
    <th><%= "Time" %></th>
    <th><%= "Monday" %></th>
    <th><%= "Tuesday" %></th>
    <th><%= "Wednesday" %></th>
    <th><%= "Thursday" %></th>
    <th><%= "Friday" %></th>
    <th><%= "Saturday" %></th>

 </tr>
  <% @time_slots.each do |time_slot| %>
    <tr>
      <td></td>
        <td><% if time_slot.dayOfWeek = "Monday" %><%= time_slot.startTime %><% end %></td>
        <td><% if time_slot.dayOfWeek = "Tuesday" %><%= time_slot.startTime %><% end %></td>
    <td><% if time_slot.dayOfWeek = "Wednesday" %><%= time_slot.startTime %><% end %></td>
    <td><% if time_slot.dayOfWeek = "Thursday" %><%= time_slot.startTime %><% end %></td>
    <td><% if time_slot.dayOfWeek = "Friday" %><%= time_slot.startTime %><% end %></td>
    <td><% if time_slot.dayOfWeek = "Saturday" %><%= time_slot.startTime %><% end %></td>
    </tr>
  <% end %>

1 个答案:

答案 0 :(得分:2)

好的,你刚刚翻过来......你需要这样的东西:

<% days = %w[ Monday Tuesday Wednesday Thursday Friday Saturday] %>

<% days.each do |day| %>
   <td>
   <% @time_slots.select {|time_slot| time_slot.dayOfWeek == day }.each do |time_slot| %>
     <%= time_slot.startTime %><br/>
   <% end %>
   </td>
<% end %>

希望这会有所帮助,祝你好运。