我正在使用夏特克宝石为Rails应用程序设计仪表板图。
我尝试使用多系列图表函数来显示支付数据的真图和假图,这是一个布尔值(真和假),使用下面的代码。
<%= line_chart Donation.group(:payment).group_by_day(:created_at).count, colors: ["#342F49", "#FB4D00" ] %>当它显示支付的图表时,false的标签没有显示,它只是显示true的标签。我附上了这个问题的截图。

因此,我决定在基于chartkick文档的多系列图表函数中添加一个选项,以便使用下面的代码显示这两个标签的真假。
<%= 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::来访者::Dashboard#index中的不可支持的访问者错误 不支持的参数类型:哈希。构造一个Arel节点。
我曾试图对如何构造Arel节点进行一些研究,但尚未取得成功。拜托,我需要帮助。提前谢谢你。
发布于 2019-08-29 12:42:33
我从Reddit rails社区的一个成员那里得到了一些帮助,然后我想出了如何让它工作。
错误是由传递给Donation.group的哈希值引起的。这是一个ActiveRecord方法,而不是Chartkick提供的东西,因此它不理解传递给它的名称/数据散列。
操作顺序需要倒置,以便将图表配置传递给line_chart函数,并将查询参数传递给ActiveRecord。还强烈建议避免视图层中的数据库查询,因为这使得它们几乎不可能进行测试。
所以我是怎么修好它的
首先,在应用程序的charts_helper.rb Helpers文件夹中创建一个文件。
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 %>就这样。
我希望这对有帮助
https://stackoverflow.com/questions/57697386
复制相似问题