あり、それはdate
属性を持っており、これらのコレクションがここ1つのアイデアだ、@events
と呼ばれる:あなたのビューでこれを入れて... 。
<ul>
<%= render @events, locals: { events: @events } %>
</ul>
...その後、あなたはこのようになりますその_event.html.erb
と呼ばれる部分だろう:
をhapping何
<% last_event = event_counter == 0 ? nil : events[event_counter - 1]
next_event = events[event_counter + 1]
%>
<% if last_event && last_event.date != event.date
# add a new date header and start a new nested list of events
%>
<li><h3><%= event.date %></h3>
<ul>
<% end %>
<li><%= link_to event %></li>
<% if next_event && next_event.date != event.date
# end the nested list and make way for the next date header and set of events
%>
</ul>
</li>
<% end %>
たちはevents
と呼ばれるローカルとして全体@events
コレクションに渡していrender
コールです。その部分の内部では、自動的に生成されたevent_counter
メソッドを使用して、コレクションの前の(events[event_counter - 1]
)イベントと次の(events[event_counter + 1]
)イベントを検索します。そして、現在のevent
の日付が(それがその日の最初の一つだという意味)last_event
の日付と異なる場合(私たちは、新しい日付の見出しと新しいセットを開始し、event
の日付がnext_event
の日付と異なる場合すなわち、それは我々がセットに終了)その日の最後の一つです。
それは少し醜いだし、確かにそれを行うにはよりエレガントな方法がありますが、それは仕事を取得します。