Этикетки и чарты

Chartkick потрясающий, и я могу делать очень простые вещи, такие как

<%= column_chart Device.joins(:reviews).group(:brand).average(:average_rating) %>

и получить такие результаты, как:

введите здесь описание изображения

Теперь проблема в том, что лейблы не передаются в чарты. Это то, что использует chartkick для отображения диаграммы:

Chartkick.ColumnChart("chart-5", {"#<Brand:0x00000008a3c048>":"78.8","#<Brand:0x0000000879e840>":"80.70000712076823","#<Brand:0x0000000853e9d8>":"81.11111111111111","#<Brand:0x000000082808e0>":"73.42857142857143"}, {});

Итак, большой вопрос... Как я могу использовать этот очень простой метод запросов, но при этом получать названия брендов на диаграмме?

Я старался:

<%= column_chart Device.joins(:reviews).group(:'brand.name').average(:average_rating) %>

...и другие варианты безрезультатно...


person Abram    schedule 02.06.2014    source источник


Ответы (1)


В основном мне просто нужно было внести небольшое изменение в мой запрос:

<%= column_chart Device.joins(:reviews).includes(:brand).group(:'brands.name').average(:average_rating) %>

Затем я переупорядочил это по среднему рейтингу, а не по названию бренда:

devices = Device.joins(:reviews).includes(:brand).group('brands.name').average(:average_rating)
arr = styles.to_a
arr.map! { |pair| [pair.first, pair.second.to_f] }
arr.sort! { |a, b| a.second <=> b.second }
@sorted_hash = ActiveSupport::OrderedHash[arr]

Вид:

<%= column_chart @sorted_hash %>

Бинго:

введите здесь описание изображения

person Abram    schedule 02.06.2014
comment
Спасибо, что сообщили, как вы это исправили. Вы сэкономили мне кучу времени! - person Stan; 13.07.2016