累积Chartkick图表& Acts_As_Taggable_On

时间:2015-03-04 13:10:01

标签: ruby-on-rails acts-as-taggable-on chartkick

我目前在使用Chartkick和acts_as_taggable_on在Rails应用程序上使用某些数据时遇到问题。

我希望我的用户搜索带有标签的项目,我的@items是:

@items = current_user.items.tagged_with(params[:query])

我的x轴是我的项目的created_at日期,我的y轴只是:我的模型的结果,这是一个整数。我希望x轴上的每个项目都是一个运行总计,包括最后一个值(正数或负数)。

如果我设置:

@chart = current_user.items.all

并将其用于chartkick:

= line_chart @chart.group_by_day(:created_at).order("day asc").sum(:result).map { |x,y| { x => (@sum += y)} }.reduce({}, :merge)

该图表效果很好,但它显然没有过滤我的搜索参数所绘制的内容。

一旦我将@chart更改为@items以获得通过搜索参数过滤的折线图,我就会收到错误:

ERROR:  column reference "created_at" is ambiguous.

我尝试在我的模型中创建不同的范围以尝试帮助这种情况,但到目前为止它似乎没有帮助。

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:2)

好吧,伙计们,我终于解决了这个问题!

关于PG冲突的大多数答案都是指.group()而我正在查看.group_by_day(:created_at)。我通过简单地使用:

修复了模棱两可的错误
= line_chart @items.group_by_day('items.created_at').order("day asc").sum(:result).map { |x,y| { x => (@sum += y)} }.reduce({}, :merge)

唯一的区别是将'items.created_at'作为字符串传递给group_by_day,以便定义我所指的created_at。