Rails: создание таблиц на основе групп связанных записей базы данных - PullRequest
2 голосов
/ 23 апреля 2009

В моей базе данных есть коллекция записей, которую я хочу распечатать в отдельные таблицы на основе даты записи.

Итак, у меня уже есть следующее (в Haml, к вашему сведению):

%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 Ответ

3 голосов
/ 23 апреля 2009

Предполагается, что recorded_on - это дата, а не DateTime:

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

Если это DateTime:

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

Теперь @records содержит несколько вложенных массивов. Прикрепите таблицу выше в частичном названии _record_table.html.haml. Обязательно замените @records на локальную переменную records, чтобы ее можно было поменять местами для каждого частичного рендеринга.

Теперь ваш шаблон haml выглядит так:

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