モデル 【game.rb】 belongs_to :member 【member.rb】 has_many :games
データからransackで日付の期間を指定してデータを抽出します
名前はmemeberのnameを表示します
日付 | 名前 | ・・・ |
---|---|---|
3/1 | AAA | ・・・ |
3/2 | AAA | ・・・ |
3/2 | AAA | ・・・ |
3/3 | BBB | ・・・ |
3/4 | BBB | ・・・ |
3/5 | CCC | ・・・ |
def index #ransackで日付の期間で抽出 @q = Game.ransack(params[:q]) @q.game_date_gteq = Time.now.strftime("%Y-01-01") if @q.game_date_gteq.nil? @q.game_date_lteq = Time.now.strftime("%Y-12-31") if @q.game_date_lteq.nil? @games = @q.result(distinct: true) #Highchartsでグラフを作成 #ハッシュを作成 @@members={} @games.sort.each do |g| if @@members.key?(g.member.name) #名前の重複チェック @@members[g.member.name] = @@members[g.member.name] +1 #名前が存在する場合はカウントアップ else @@members[g.member.name] = 1 #名前が存在しない場合はハッシュに追加 end end #Highcherts用の変数にハッシュの値を格納 category =[] current_quantity = [] @@members.each do |m1,m2| category<<(m1) current_quantity<<(m2) end #Highchartsの設定 @graph = LazyHighCharts::HighChart.new('graph') do |f| f.title(text: '参加数の推移') f.xAxis(categories: category) f.series(name: '参加数', data: current_quantity) f.chart(type: "bar") #棒グラフ end
以下のようにHighchartsでグラフに表示できましたが、
良い考えが浮かばず、力技となってしまいました。
他に良い方法はありますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/12 09:52
2017/04/12 10:01
2017/04/13 01:15
2017/04/13 01:22 編集
2017/04/13 01:29