Ruby / Rails: не получается заставить код тепловой карты Бантика работать - PullRequest
0 голосов
/ 16 сентября 2011

Я играю с кодом, доступным здесь (репозиторий GitHub здесь ), чтобы создать тепловую карту / облако.

Я сталкиваюсь с большим количеством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 (где определен метод heatmap):

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 и печатало его на сайте.

1 Ответ

0 голосов
/ 29 августа 2012

Вот как я это реализовал ... https://gist.github.com/3505320. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...