Rails:命令由两个不同的每个循环创建的dom元素

时间:2015-11-29 00:32:27

标签: ruby-on-rails arrays ruby loops

我在week循环中有两个循环,static_events, loop_events创建按时间排序的链接。 问题是当第一个循环结束时,第二个循环在第一个循环之后创建元素,并且顺序中断。

<% @week.each do |day| %>

   <% @static_events.each do |event| %>
      <%= link_to event.start_time.strftime('%H:%M'), event_path(event.id) %>
   <% end %>

   <% @loop_events.each do |event| %>
      <%= link_to event.start_time.strftime('%H:%M'), event_path(event.id) %>
   <% end %>

<% end %>

结果大致如下:

01:00     # =>  @static_events => index 1
03:00     # =>  @static_events => index 2
04:00     # =>  @static_events => index 3
02:00     # =>  @loop_events => index 1

我需要这个结果:

01:00     # =>  @static_events => index 1
02:00     # =>  @loop_events => index 1
03:00     # =>  @static_events => index 2
04:00     # =>  @static_events => index 3

如何按时间对每个循环进行排序/排序,并实现上述结果?

1 个答案:

答案 0 :(得分:2)

好吧,你可以合并它们(数组,而不是循环,当然)并按时间排序:

<% [@static_events, @loop_events].flatten.sort_by(&:start_time).each do |event| %>
  <%= link_to event.start_time.strftime('%H:%M'), event_path(event.id) %>
<% end %>