1

我正在尝试评估 Ruport 以在我的 Rails 应用程序中使用,但我不确定如何获取一系列带有日期/时间戳的记录并通过 Ruport 的分组功能对它们进行分组。

如果 Ruport 没有意义,我愿意接受其他/更好的方法来进行相同的分组。

4

3 回答 3

6

没有报告:

<% @posts.group_by {|p| p.created_at.at_beginning_of_day }.each do |day, posts| %>
  <h2><%= day.strftime("something...") %></h2>

  <% posts.each do |post| %>
    do stuff with `post`.
  <% end %>
<% end %>

使用at_beginning_of_monthat_beginning_of_week,具体取决于您要分组的内容。

于 2009-09-15T07:06:05.240 回答
2

Ruport 包括一种向表中添加新列的方法。因此,可以像这样从时间戳源进行日期明智的分组:

@table.add_column('created_at_date') { |r| r.created_at.to_date }
created_at_date_grouping = Grouping(@table, :by => "created_at_date")

当然,这种方法也可以用来生成更有趣的报告,比如在 Google Analytics 上:

@table.add_column('day_of_week') { |r| r.created_at.strftime('%a') }
@table.add_column('hour_of_day') { |r| r.created_at.strftime('%H') }

虽然不知道性能。

于 2011-06-16T03:32:18.670 回答
1

我建议将 @posts.group_by 函数移到控制器而不是视图中。

于 2009-09-16T14:13:57.350 回答