【问题标题】:Chartkick: Arel::Visitors::UnsupportedVisitError in Ruby on RailsChartkick:Ruby on Rails 中的 Arel::Visitors::UnsupportedVisitError
【发布时间】:2019-08-28 17:28:09
【问题描述】:

我正在使用Chartkick gem 为 Ruby on Rails 应用程序设计仪表板图。

我尝试使用 multiple series 图表功能来显示支付数据的真假图表,该图表是一个布尔值(真假),使用代码下面。

<%= line_chart Donation.group(:payment).group_by_day(:created_at).count, colors: ["#342F49", "#FB4D00" ] %>

在显示付款图表时,false的标签没有显示,它只显示true的标签。我附上了问题的截图。

所以我决定根据 chartkick gem 文档为 multiple series 图表函数添加一个 name 选项,以便通过使用显示真假标签下面的代码

<%= line_chart Donation.group(payment: [{name: "Series A", data: true}, {name: "Series B", data: false} ]).group_by_day(:created_at).count, colors: ["#342F49", "#FB4D00" ] %>

但这次我得到了错误

Arel::Visitors::UnsupportedVisitError in Dashboard#index

不支持的参数类型:哈希。而是构建一个 Arel 节点。

我已经尝试对如何为此构建一个 Arel 节点进行一些研究,但还没有成功。请我需要一些帮助。提前谢谢你。

【问题讨论】:

    标签: ruby-on-rails chartkick


    【解决方案1】:

    我从 Reddit rails 社区的一位成员那里得到了一些帮助,然后想出了如何让它发挥作用。

    错误是由传递给Donation.group 的哈希值引起的。这是一个 ActiveRecord 方法,不是 Chartkick 提供的东西,所以它不理解传递给它的名称/数据哈希。

    需要颠倒操作顺序,以便将chartkick config 传递给line_chart 函数,并将SQL 查询参数传递给ActiveRecord。还强烈建议避免在视图层中进行数据库查询,因为这使得它们几乎无法测试。

    这就是我修复它的方法;

    首先,在应用程序的 Helpers 文件夹中创建一个 charts_helper.rb 文件

    app/helpers/charts_helper.rb

    module ChartsHelper
      def donation_payments_chart_data
        [
          { name: 'true', data: Donation.group(:payment).group_by_day(:created_at).count, color: "#342F49" },
          { name: 'false', data: Donation.group(:payment).group_by_day(:created_at).count, color: "#FB4D00" }
        ]
      end
    end
    

    其次,在您的视图文件中,调用 app/helpers/charts_helper.rb

    中定义的 donation_payments_chart_data 方法

    app/views/dashboard/index.html.erb

    <%= line_chart donation_payments_chart_data %>
    

    就是这样。

    我希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 2011-02-15
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多