0
我在使用可用代碼here(GitHub存儲庫here)來生成熱圖/雲。Ruby/Rails:無法讓Bantik的熱圖代碼正常工作
我遇到了很多的NoMethodErrors和其他問題,以防止頁面被渲染。在頁面的兩倍或三倍處做了渲染,雲無法正常顯示。我將不勝感激任何和所有的幫助,讓我可以玩這個代碼。
小時中的錯誤是:
undefined method `each_pair' for "Many":String
這是引用我的觀點:
<h1>Title</h1>
.
.
.
<% stylesheet_link_tag "custom" %>
<%= heatmap({"Foo" => 13,
"Bar" => 15,
"Trouble" => 5,
"Braids" => 1,
"Something" => 9,
"Else" => 13,
"Many" => 20, <----
"Zombies" => 7,
"nothing" => 0}) %>
我直接傾倒測試哈希到視圖,因爲我得到一個:
undefined method `keys' for nil:NilClass
爲了完整起見,這是我的ApplicationHelper(定義了熱圖方法):
module ApplicationHelper
def heatmap(histogram={})
content_tag(:div, :class => "heatmap")
histogram.keys.sort{|a,b| histogram[a] <=> histogram[b]}.reverse.each do |k|
next if histogram[k] < 1
_max = histogram_max(histogram) * 2
_size = element_size(histogram, k)
_heat = element_heat(histogram[k], _max)
content_tag(:span, content_tag(:class => "heatmap_element", :style => "color: ##{_heat}#{_heat}#{_heat}; font-size: #{_size}px;"), "#{k}")
end
content_tag(:br, :style => "clear: both;")
end
def histogram_max(histogram)
histogram.map{|k,v| histogram[k]}.max
end
def element_size(histogram, key)
(((histogram[key]/histogram.map{|k,v| histogram[k]}.sum.to_f) * 100) + 5).to_i
end
def element_heat(val, max)
sprintf("%02x" % (200 - ((200.0/max) * val)))
end
end
我將代碼從存儲庫中取出並用於幫助器中。我已將代碼更改爲使用content_tags,因爲該應用程序正在轉義HTML代碼並將其打印在網站上。