2017-03-08 193 views
0

在我的應用程序有模式Campaign & MapRuby on Rails的 - 添加morris.js正確的協會

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表中)

在我campaigns#show觀點,我試着用morris.js添加圖表maps impressions(在我的應用程序添加了所有需要的文件,並可以看到圖表)

在我的圖表中,我想在campaign.maps上顯示impressions,但我在我的圖表中輸入了錯誤的數據。

所以基本上去我的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

這行看起來可疑:

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

where(id: maps)是選擇對印象id列,而您大概想選擇在impressionable_typeimpressionable_id? OMG !!

+0

OMG !!謝謝@ gwcodes,這是當你的眼睛疲憊,你沒有焦點哈哈。 – Rubioli