Rails:Chartkick累积用户图

我在一个活动的管理仪表板中使用chartkick并尝试跟踪累积的用户群。

使用groupdate按周计算我可以成功创建一个显示时间点计数的图表,但很难显示累积结果。

关于最佳接近方式的任何建议,因为我没有找到类似的问题?

图表部分

  

dashboard.rb

  column do panel "Recent User Additions" do table_for User.order("id desc").limit(10).each do |_user| column(:email) { |user| link_to(user.email, admin_user_path(user)) } column(:state_waters) { |user| link_to(user.state_waters, admin_user_path(user)) } column(:state_waters) { |user| link_to(user.home_port, admin_user_path(user)) } end end 

如果我理解你的问题,你需要操纵数据的哈希。

在控制器中做这样的事情:

 @data = User.group_by_week(:created_at).count accumulator = 0 @data.transform_values! do |val| val += accumulator accumulator = val end 

然后将视图中的图表显示为<%= line_chart @data %>

如果检查哈希<%= User.group_by_week(:created_at).count.inspect %>它就会变得清晰。

为了在任何哈希上使用累加器,可以将自定义方法添加到类哈希中。

 module HashPatch def accumulate_values! accumulator = 0 transform_values! do |val| val+= accumulator accumulator = val end end end Hash.include HashPatch points = {'x1' => 0, 'x2' => 10, 'x3' => 10, 'x4' => 10.1} points.accumulate_values! #=> {"x1"=>0, "x2"=>10, "x3"=>20, "x4"=>30.1} 

transform_values! 自Ruby v4.2.1起