Rails:基于相关数据库记录组生成表

时间:2009-04-23 16:27:00

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

我的数据库中有一些记录集合,我想根据记录日期打印出来以分隔表格。

所以我已经拥有以下内容(在Haml,fyi):

%table
  %tr
    %th Name
    %th Type
    %th Total Hits
  - for record in @records
    %tr{ :class => cycle('odd','even') }
      %td= record.name
      %td= record.target_type
      %td= record.outbound + record.detail + record.custom + record.dynamic

此刻,它会在同一个表格中显示我的所有记录。 record.recorded_on包含我的记录日期。我想为包含当天所有记录的每一天生成单独的表,如上面的表。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

假设recorded_on是日期,而不是DateTime:

@records = Record.all.group_by(&:recorded_on)

如果是DateTime:

@records = Record.all.group_by { |record| record.recorded_on.to_date }

现在@records包含一些嵌套数组。将你的桌面haml粘贴在名为_record_table.html.haml的部分内容中。请务必将@records更改为局部变量records,以便可以为每个部分渲染换出它。

现在您的haml模板如下所示:

- @records.each do |records_for_one_day|
  = render :partial => 'render_table', :locals => { :records => records_for_one_day }