[英]Chartkick: Arel::Visitors::UnsupportedVisitError in Ruby on Rails
我正在使用Chartkick gem為Ruby on Rails應用程序設計儀表板圖。
我嘗試通過以下代碼使用多系列圖表功能顯示付款數據的真假圖表,該數據是布爾值(真假)。
<%= line_chart Donation.group(:payment).group_by_day(:created_at).count, colors: ["#342F49", "#FB4D00" ] %>
雖然它顯示了付款圖表,但未顯示false標簽,而僅顯示true標簽。 我已附上該問題的屏幕截圖。
因此,我決定根據chartkick gem文檔向多系列圖表功能添加一個名稱選項,以便通過使用以下代碼來顯示真假標簽
<%= line_chart Donation.group(payment: [{name: "Series A", data: true}, {name: "Series B", data: false} ]).group_by_day(:created_at).count, colors: ["#342F49", "#FB4D00" ] %>
但是這次我得到了錯誤
Dashboard#index中的Arel :: Visitors :: UnsupportedVisitError
不支持的參數類型:哈希。 而是構造一個Arel節點。
我試圖對如何為此構建Arel節點進行一些研究,但尚未成功。 請給我一些幫助。 先感謝您。
我從Reddit rails社區的一名成員那里得到了一些幫助,然后想出了使它工作的方法。
該錯誤是由傳遞給Donation.group
的哈希值引起的。 這是一個ActiveRecord方法,不是Chartkick
提供的Chartkick
,因此它無法理解傳遞給它的名稱/數據哈希。
需要顛倒操作順序,以便將chartkick配置傳遞給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 %>
就這樣。
我希望這有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.