如何动态调整Chartkick图中显示的内容

时间:2019-04-11 12:45:32

标签: ruby-on-rails ruby chartkick ahoy

我正在Ruby on Rails中创建一个应用程序。在应用程序中,我有一些事情正在使用Ahoy事件跟踪点击次数。然后,使用Chartkick,此点击数将显示在图表的管理页面中。这样的想法是,如果单击的东西很少,则应将其删除并替换为其他内容。现在的问题是,如果我删除了信息,那么Chartkick仍会对其进行跟踪。

例如,通常在Chartkick中创建图形,就像这样

<%= pie_chart Yogurt.group(:flavor).count %>

其中Yogurt是表的名称,:flavor是列的名称。但是,当使用Ahoy :: Events时,会在属性列中跟踪很多信息,例如id,类,文本等

如果我尝试制作这样的图形

<%= pie_chart Ahoy::Events.group(:properties).count %>

然后,图形上显示的信息将包含所有不同的按钮单击,它们的ID等,并且这是不可读的。以这种方式进行操作还意味着将无法分离需要跟踪的不同点击。

另一种实现方法是在控制器中创建一个变量,该变量包括它在数据库中出现的次数

@variable = Ahoy::Events.where("properties->>'text' = ?", "Name of title that you are tracking the clicks for").count

这是单击特定按钮的次数。 然后可以通过执行此操作来创建图形

  = pie_chart [["Name of title that you are tracking the clicks for", @variable], ["anothername", @variable2]]

这可以工作,但是在控制器中看起来很丑陋,一张图表包含约15个变量。同样,当其中一个标题被删除后,图表仍会显示旧标题。

我想到的想法是为标题提供一个代表它的类,例如功能。每个功能都具有该类,因此可以通过执行这些操作找到所有

@features = Ahoy::Events.where("properties->>'class' = ?", "btn btn-link feature")
然后可以循环显示

@功能,并显示文字

@features.each_with_index do |name, index|
      puts @name[index].properties["text"]
 end

这将返回类似的内容(标题已被功能n代替)

feature 1

feature 2

feature 1

feature 4

feature 5

现在这很好,因为它包含了我要显示的文本及其出现的次数

但是我无法创建像这样的图表图表

= pie_chart @features

@features格式错误

我基本上需要以这种格式创建一个变量

{"feature 1"=>n, "feature 2"=>n}

其中n是它们出现在循环中的次数

0 个答案:

没有答案