如何进行双重迭代

时间:2013-09-07 12:04:59

标签: ruby-on-rails ruby

我们有课程安排。在@appointments_monday中,我们有不同的appointment属于特定的category

enter image description here

当然,@appointment.each不起作用。它会产生类似的东西:

enter image description here

因为某个类别的某些约会可能是空的。我们试图循环遍历@categories来判断每个appointment,但结果却是这样的:

enter image description here

    <% @appointments.each do |appointment| %>
        <% @categories.each do |category| %>
            <% if appointment.category == category %>
              <%= appointment %>  
            <% else %>
                placeholder
            <% end %>    
       <% end %>
    <% end %>

我认为问题在于@categories.each每次都会循环播放。我们该怎么处理这个?

1 个答案:

答案 0 :(得分:2)

然而,不是循环遍历约会和类别,而是只迭代一次类别(因为您想为每个类别输出一些内容,无论是否有约会)并检查是否存在任何约会类别:

<% @categories.each do |category| %>
  <% category_appointments = @appointments.select {|a| a.category == category } %>
  <% if category_appointments.empty? %>
    <%= placeholder %>
  <% else %>
    <%= category_appointments %>
  <% end %>
<% end %>

selectEnumerable上的一种方法,它包含在Array中。