2016-12-27 7 views
0

私はツリービューを実装しようとしています。私は、DateTimeフィールドがあるテーブルを持っています。私は必要は、ビューを作成することであるレコードがその単一のDateTimeフィールドによってグループです。このようなものが値:Rails 5:ツリービューの "DateTime"フィールドによるグループレコード

-Year 
    -Month 
    -Day 
     /All records belonging to particular day is populated.../ 
    ... 

レコードがそれに応じてグループ化する必要があるので、複数の年、月、日が存在する場合があります。レコードのグループ化の目的で、私はGroupdate gemを使うことができました。

このようなコントローラ/モデルを作成する方法についてのヒントは素晴らしいと思います。ありがとうございました!

更新

indexアクションで、私はメディアを選択する上で、media_idこのは、その配置を見つけるために、渡されたドロップダウンを持っています。プレースメントでは、私は:adbreaksというDateTimeの列を持ち、グループ化を行いたいと思います。 adbreaksには任意のdatetimeをロードすることができ、私のアプリケーションは年、月、日ごとに動的にグループ化する必要があります。

/manage_inventory_controller.rb

def index 
    @media = Media::Media.where(company_id: user_companies) 
    end 

    def update_placements 
    @placements = Placements::Radios.joins(positions: :media).where('media_id = ?', params[:media_id]) 
    respond_to do |format| 
    format.js 
    end 
    end 

答えて

1
samples = 100.times.map { |n| { id: n, time: rand(10000).hours.ago } } 

data = samples.group_by { |rec| rec[:time].to_date }.group_by { |d, _| d.at_beginning_of_month }.group_by { |m, _| m.at_beginning_of_year } 

data.sort_by(&:first).each { |y, recs| puts "-#{y.year}"; recs.sort_by(&:first).each { |m, recs| puts " -#{m.strftime '%B'}"; recs.sort_by(&:first).each { |d, recs| puts " -#{d.day}"; recs.each { |rec| puts "  id: #{rec[:id]}" } } } } 

それは出力:

-2015 
    -November 
    -13 
     id: 32 
    -16 
     id: 41 
    -19 
     id: 4 
    -20 
     id: 39 
    -21 
     id: 86 
    -December 
    -4 
     id: 68 
    -7 
     id: 35 
    -8 
     id: 98 
    -22 
     id: 10 
    -27 
     id: 77 
-2016 
    -January 
    -10 
     id: 37 
    -19 
     id: 67 
    -31 
     id: 85 
    -February 
    -2 
     id: 78 
    -13 
     id: 89 
    -16 
     id: 75 
    -17 
     id: 36 
     id: 99 
    -22 
     id: 28 
    -March 
    -9 
     id: 7 
    -11 
     id: 66 
    -16 
     id: 59 
    -26 
     id: 18 
    -29 
     id: 8 
    -April 
    -2 
     id: 3 
    -8 
     id: 69 
    -9 
     id: 60 
    -11 
     id: 2 
    -12 
     id: 33 
    -15 
     id: 26 
    -17 
     id: 17 
     id: 46 
    -19 
     id: 13 
    -22 
     id: 12 
    -24 
     id: 64 
    -27 
     id: 50 
    -29 
     id: 14 
    -30 
     id: 43 
    -May 
    -25 
     id: 82 
    -26 
     id: 11 
    -June 
    -3 
     id: 72 
    -8 
     id: 92 
    -14 
     id: 25 
    -19 
     id: 15 
    -22 
     id: 95 
    -23 
     id: 56 
    -26 
     id: 80 
    -27 
     id: 87 
    -29 
     id: 19 
    -July 
    -1 
     id: 6 
    -2 
     id: 81 
    -3 
     id: 1 
    -6 
     id: 88 
    -7 
     id: 65 
    -15 
     id: 91 
    -17 
     id: 27 
    -20 
     id: 38 
    -26 
     id: 73 
    -August 
    -1 
     id: 0 
    -7 
     id: 30 
    -8 
     id: 79 
    -15 
     id: 9 
    -23 
     id: 24 
    -25 
     id: 21 
    -September 
    -1 
     id: 52 
    -7 
     id: 48 
    -9 
     id: 34 
    -10 
     id: 54 
     id: 55 
    -22 
     id: 70 
    -27 
     id: 23 
    -29 
     id: 94 
    -October 
    -2 
     id: 22 
    -7 
     id: 51 
    -23 
     id: 63 
    -24 
     id: 57 
     id: 62 
    -28 
     id: 58 
     id: 76 
    -29 
     id: 90 
    -31 
     id: 49 
    -November 
    -5 
     id: 5 
     id: 45 
    -6 
     id: 61 
    -9 
     id: 93 
    -12 
     id: 83 
    -13 
     id: 71 
    -16 
     id: 53 
    -17 
     id: 29 
    -21 
     id: 44 
    -23 
     id: 84 
    -December 
    -9 
     id: 31 
    -13 
     id: 16 
    -14 
     id: 47 
    -16 
     id: 42 
    -17 
     id: 20 
     id: 96 
    -18 
     id: 97 
    -19 
     id: 74 
    -23 
     id: 40 
+0

ありがとうございました!これが私が必要とするものになるかもしれないように見えます。上記の私の更新をチェックし、正しく理解しているかどうかをコメントしてください。私の場合、@ placementは 'samples'でしょうか?さらに、出力年にロードしてから、特定の年 - >月を選択し、次に月 - >日を選択すると、何を変更する必要がありますか? – matiss

関連する問題