Rails group_by多次显示

时间:2016-02-26 14:52:51

标签: ruby-on-rails ruby

我试图创建一个页面,显示按月分组的事件并按事件日期排序。

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,我可以看到5月的一个活动,4月的两个,3月的两个活动。这重复四次;我想,它会像数据库中的事件一样经常重复循环。

我需要做什么才能让每个事件只显示一次?

以下是呈现部分的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>

1 个答案:

答案 0 :(得分:1)

使用:

 <%= render @events %>

Rails正在迭代您的所有事件,并且每次都会呈现 _event.html.erb 部分。

您可以尝试将 event_months 代码放在其自己的partial,index.html.erb或其他位置。