Ruby on Rails - 为关联正确添加 morris.js

Ruby on Rails - Adding morris.js Correctly for a associations

在我的应用程序中,我有模型 Campaign & 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

在我的 Map 模型中,我使用 is_impressionable 安装 impressionist gem 并且我还添加了 counter_cache,这将在每次访问时更新我的​​ impressions_count (在我的 maps table 中)

在我的 campaigns#show 视图中,我正在尝试使用 morris.js 添加 maps impressions 的图表(我已经在我的应用程序中添加了所有需要的文件并且可以看到图表).

在我的图表中,我想在 campaign.maps 上显示 impressions,但我在图表中输入了错误的数据。

所以基本上,转到我的 impressions table,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']
  });

如前所述,我得到的数字完全错误。这是我控制台中的查询:

我不确定我做错了什么。

这一行看起来很可疑:

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

where(id: maps) 正在选择 id 列以获得展示次数,而您可能希望选择 impressionable_typeimpressionable_id?