簡體   English   中英

Ruby on Rails中的Chartkick:Arel :: Visitors :: UnsupportedVisitError

[英]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標簽。 我已附上該問題的屏幕截圖。

標簽的屏幕截圖未顯示為false

因此,我決定根據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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM