Это один из способов показать диаграмму, просто jQuery получает данные из контроллера.
В контроллере получить данные, настроить и преобразовать в json
. Настройте уважение к своим моделям. Вот пример с массивом хэшей (данные передаются в виде массивов):
@series = [ {name: 'Lily', data: [25]}, {name: 'Tom', data: [27]}, {name: 'Chris', data: [19]} ].to_json
Например, если ваша модель User
включает столбец возраста, вы можете настроить ее следующим образом:
@series = User.all.map{ |user| {name: user.name, data: [user.age]} }.to_json
В поле зрения (настраивайте как хотите), передавая переменную здесь:
<div id='students_chart'></div>
<script>
$(function () {
var myChart = Highcharts.chart('students_chart', {
chart: {
type: 'column'
},
title: {
text: 'User ages'
},
xAxis: {
categories: ['Users']
},
yAxis: {
title: {
text: 'Age'
}
},
series: <%= raw @series %>
});
});
</script>
Редактировать - получить данные с сервера
Вместо отправки данных для просмотра, визуализируйте как json (не нужно добавлять новое действие):
respond_to do |format|
format.html
format.json { render json: @series }
end
Затем поместите JavaScript в файл и получите данные JSON, используя jQuery.getJSON()
:
$.getJSON(window.location.href, function(json) {
var highChartData = json;
console.log(json)
var myChart = Highcharts.chart('students_chart', {
chart: {
type: 'column'
},
title: {
text: 'User ages'
},
xAxis: {
categories: ['Users']
},
yAxis: {
title: {
text: 'Age'
}
},
series: highChartData
});
});