我正在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是它们出现在循环中的次数