我有一个Rails应用程序,有两个模型和它们之间的关系 . 我使用ChartKick按Zipcode显示提供者订单的数量 .
order.rb Model
class Order < ActiveRecord::Base
belongs_to :user
belongs_to :provider
belongs_to :address
provider.rb Model
class Provider < ActiveRecord::Base
belongs_to :user
has_many :orders
def past_orders_chart
Order.where(:provider_id => self.id).where(:status => "2")
end
address.rb model
class Address < ActiveRecord::Base
belongs_to :user
has_many :orders
past_orders.html.erb
<%= pie_chart @past_orders_chart.includes(:address).group(:zipcode).sum(:zipcode) %>
Here is how the chart looks using 'sum':
问题是它是根据上述命令对zipcodes进行求和 .
如果我将命令更改为“count”而不是“sum”,它将显示图形,但仅计算邮政编码的唯一出现次数 .
pie_chart =@past_orders_chart.includes(:address).group(:zipcode).count(:zipcode)
Here is how the chart looks using 'count':
使用'sum'可以直观地生成正确的饼图(以图表中显示的百分比表示) .
所以问题是如何让图表列出邮政编码在数据集中出现的总次数?我试图发布第三个示例屏幕截图但被SO阻止 .
谢谢,
大卫
2 回答
我把它移到模型中并且能够用以下方法解决它:
然后从控制器调用方法@past_orders_chart并将其传递给视图:
要调试该问题,您应该在
rails console
中运行和/或使用.to_sql来查看正在运行的查询 .这不是您标记的图表/ chartkick问题 .
使用
count
将以下内容添加到SELECT子句中:因此,如果您不计算zipcode的不同值,则应将其替换为