2017-03-08 13 views
0

正しくmorris.jsを追加私が持っているモデルCampaign & Map:私のMapモデルでルビー - 私のアプリケーションで団体

class Campaign < ActiveRecord::Base 
    has_many :maps, :dependent => :destroy 

class Map < ActiveRecord::Base 
    is_impressionable :counter_cache => true, :unique => :request_hash 
    belongs_to :campaign, :counter_cache => true, touch: true 

、私が使用していimpressionist gemを取り付ける付属していますis_impressionable &私はcounter_cacheを追加しました。これは、すべて(私のmapsテーブル内)のimpressions_countに更新されます。私campaigns#showビューで

、Imはmorris.jsを使用してmaps impressionsためのグラフを追加しようとしている(私は自分のアプリケーションに必要なすべてのファイルを追加し、チャートを見ることができます)

私のグラフでは、impressionscampaign.mapsに表示したいのですが、グラフに間違ったデータが表示されています。

基本的に私のimpressionsテーブルに行き、sum私のcampaign.mapsが与えられた日にすべての訪問をします。

これは私が今まで持っているものです:

module CampaignsHelper 
    def impressions_chart_data_campaign(maps) 
    (7.days.ago.to_date..Date.today).map do |date| 
     { 
      created_at: date, 
      impressions: Impression.where("date(created_at) =?", date).where(id: maps).size 
     } 
    end 
    end 
end 

マイcampaigns#showビュー:

= content_tag :div, "", id: "impressions_charts_double", data: {impressions: impressions_chart_data_campaign(@campaign.maps)} 

:javascript 
    Morris.Area({ 
    element: 'impressions_charts_double', 
    data: $('#impressions_charts_double').data('impressions'), 
    xkey: 'created_at', 
    ykeys: ['impressions'], 
    labels: ['Impressions'] 
    }); 

私は完全に間違った番号を取得しています述べたように。これは私のコンソールのクエリです:

DB Queries 私は間違っていますか?

答えて

2

この行は、容疑者になります。あなたはおそらくimpressionable_typeimpressionable_idに選択することにしたいのに対し、

impressions: Impression.where("date(created_at) =?", date).where(id: maps).size 

where(id: maps)は、インプレッションに対してid列に選択されましたか?

+0

OMG !!ありがとう@ gwcodes、これはあなたの目が疲れているときに起こり、あなたは焦点が外れているのです。 – Rubioli