2009-04-23 6 views
2

データベースに、レコードの日付に基づいて別のテーブルに出力したいレコードのコレクションがあります。Rails:関連するデータベースレコードのグループに基づいてテーブルを生成

だから私はすでに(FYI、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には私の記録の日付が入っています。上記のように、その日のすべてのレコードを含む毎日別のテーブルを生成したいと思います。

どうすればよいですか?

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

@recordsは、いくつかのネストされた配列が含まれています。それはDateTimeのであれば

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

recorded_onを想定し

答えて

3

は、日付、およびでない日時です。上記のテーブルの上に、_record_table.html.hamlという名前の部分を貼り付けてください。 @recordsを必ずローカル変数recordsに変更して、部分レンダリングごとにスワップアウトすることができます。 - 私がまさに必要

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

ありがとう:

今すぐあなたのHAMLテンプレートは次のようになります。しかし、好奇心の念から、「&:」は、@records = Record.all.group_by(&:recorded_on)の意味は何ですか? – neezer

+1

&:Symbol#to_procと呼ばれるものです。これはブロックを持つメソッドへの呼び出しを短縮する方法です。だから、group_by(&:recorded_on)と同じ効果があります:group_by {| record | record.recorded_on} –

+0

マックスが正しいです。 2番目の例で私はそこに書いていましたが、私は省略形のバージョンではサポートしていない結果をさらに処理したいので、手書きを使用する必要がありました。 –

関連する問題