使用Group_by Rails

时间:2013-03-25 11:39:23

标签: ruby-on-rails ruby ruby-on-rails-3 group-by

今天使用group_by,试图了解它,看看它是否是我想要实现的正确解决方案。我有以下型号

class Fixture < ActiveRecord::Base
  attr_accessible :home_team, :away_team, :kickoff_time, :fixture_date
end

我想通过fixture_date对所有灯具进行分组。到目前为止,我的控制器看起来像这样

def fixturelist
  @fixtures = Fixture.all
  @fixture_date = @fixtures.group_by { |fd| fd.fixture_date }
end 

在我看来,我想做的是列出该特定日期的home_team和客队比赛

查看

<% @fixture_date.each do |f| %>
 <%= f %>
<% end %>

按日期输出所有灯具的数组,因此group_by有效。我正在寻找一些能够正常工作的指针,即查看每个日期列出的所有灯具。看到一个有效的例子可以帮助我理解更多

实施例

Date

Team 1 Vs Team2
Team 1 Vs Team2
Team 1 Vs Team2

Date 2

Team 1 Vs Team2
Team 1 Vs Team2
Team 1 Vs Team2

由于

1 个答案:

答案 0 :(得分:1)

检查一下,

http://railscasts.com/episodes/29-group-by-month

我认为你希望你的视图代码看起来像这样,

<% @fixture_date.sort.each do |date, fixtures| %>
  <h2><%= date %></h2>

  <% fixtures.each do |fixture| %>
    <%= fixture.team_1 %> VS <%= fixture.team_2 %>
  <% end %>
<% end %>

修改

如果您的fixture_datedatetime列,而不仅仅是date列,那么您的控制器代码将如下所示,

@fixture_date = @fixtures.group_by { |fd| fd.fixture_date.beginning_of_day }