我试图创建一个页面,显示按月份分组的事件并按事件日期排序。Rails group_by多次显示
events_controller.rb
def index
@events = Event.all.order("date DESC")
@event_months = @events.group_by { |t| t.date.beginning_of_month }
end
_event.html.erb
<% @event_months.each do |month, events| %>
<h2><%= month.strftime('%B') %></h2>
<% for event in events %>
<div class="events">
<%= event.name %>
<%= format_date(event.date) %>
<%= event.description %>
</div>
<% end %>
<% end %>
我在我的数据库五个事件。开幕活动index.html
,我可以看到一个事件在五月,两个在四月,两个在三月。这是重复四次;我想,它会像数据库中发生事件一样频繁地重复循环。
我需要做什么以便每个事件只显示一次?
这里是index.html.erb
呈现部分:
<div class="container">
<h1>Events</h1>
<div class="row">
<%= render @events %>
</div>
<div class="row event-row">
<div class="col-xs-12 neues-event">
<%= link_to 'Neues Event erstellen', new_event_path, class: "btn btn-default center-block" %>
</div>
</div>
</div>
不相关,但你几乎不需要使用'for'循环。 'events.each do | event |'是更习惯的方式。现在,如何呈现'_event'部分?请显示索引模板。 – BroiSatse
嘿@BroiSatse。谢谢你的提示。我一直在使用[RailsCast](http://railscasts.com/episodes/29-group-by-month)示例在他们使用'for'循环获取结果的地方创建它。我已经在我最初的问题中分享了索引模板。 – marcost85