0
ヒートマップ/クラウドを生成するコードhere(GitHub repository here)で遊んでいます。Ruby/Rails:Bantikのヒートマップコードが動作しない
私は多くのNoMethodErrorsと、ページがレンダリングされないようにする他の問題を抱えています。ページの2〜3回はレンダリングしても、クラウドは正しく表示されませんでした。私はこのコードを使って遊ぶことができるように、この作業を行う上でのあらゆる助けに感謝します。
時間の誤差がある:
:私はなっていたので、私はビューに直接テストハッシュをダンプしてい<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 `each_pair' for "Many":String
は、この私の見解を参照しています
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
私はリポジトリからコードを取り出し、その代わりにヘルパーで使用しました。アプリがHTMLコードをエスケープしてサイトに印刷していたため、content_tagsを使用するようにコードを変更しました。