2011-09-16 8 views
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を使用するようにコードを変更しました。

答えて

関連する問題