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_type
和 impressionable_id
?
在我的应用程序中,我有模型 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_type
和 impressionable_id
?