2016-12-27 72 views
0

我正在努力實現樹視圖。我有一個有DateTime字段的表。 我需要的是其中的記錄是由單一的DateTime字段值組創建一個視圖是這樣的:Rails 5:通過樹視圖中的「DateTime」字段記錄組記錄

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

可以有多個年,月,天,以便記錄都必須進行相應的分組。爲了記錄分組目的,我可以使用Groupdate gem

任何有關如何在控制器/模型中構建類似內容的提示都很棒。謝謝!

更新

在指數動作我都在那裏上媒體選擇,media_id傳遞給找到它的展示位置下拉。在我有:adbreaks列的日期時間和我想要分組的位置。在adbreaks可以加載任何隨機日期時間,我的應用程序必須按年,月,日動態分組。

/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

謝謝!看起來這可能是我需要的東西。你可以,請檢查我上面的更新和評論,如果我理解正確 - 在我的情況下@placements將是'samples',對吧?另外 - 如果我想在輸出年份加載,然後通過選擇特定年份 - >月份,然後是月份 - >天,我應該更改哪些內容? – matiss