Поэтому я использую диаграмму для отображения наиболее распространенных операционных систем (например, XP, server 2003 и т. Д.) И пытаюсь получить эту информацию из ActiveRecord.У меня есть модель Node
со столбцом operating_system
.
На моей странице show
это то, что у меня внизу:
var chart = c3.generate({
bindto: '#nodes-os-chart',
title: {
text: 'Top 5 Operating Systems Detected'
},
data: {
columns: [
['Microsoft Windows XP', 10],
['Microsoft Windows Server 2003', 5],
['Microsoft Windows Server 2016', 15]
],
type : 'pie',
onclick: function (d, i) { console.log("onclick", d, i); },
onmouseover: function (d, i) { console.log("onmouseover", d, i); },
onmouseout: function (d, i) { console.log("onmouseout", d, i); }
},
legend: {
position: "right"
}
});
Однако я быЯ хотел заполнить массив столбцов некоторыми данными из ActiveRecord, поэтому я попытался превратить его в вызов ajax, например:
var operating_systems = $.ajax({
url: window.location.pathname + "/node_os",
type: 'GET',
dataType: 'json', // added data type
success: function(res) {
console.log(res);
alert(res);
}
});
var chart = c3.generate({
bindto: '#nodes-os-chart',
title: {
text: 'Top 5 Operating Systems'
},
data: {
columns: operating_systems,
type : 'pie',
onclick: function (d, i) { console.log("onclick", d, i); },
onmouseover: function (d, i) { console.log("onmouseover", d, i); },
onmouseout: function (d, i) { console.log("onmouseout", d, i); }
},
legend: {
position: "right"
}
});
Я добавил маршрут для get 'node_os'
, чтобы отобразить обратно на нужныйконтроллер.Однако теперь в контроллере этот метод я определил для node_os
:
# GET /logs/4/node_os
def node_os
return ['Test1','Test2']
end
Test1 и Test2 - просто примеры, но я пытаюсь найти лучший способ сделать это.У меня появляется всплывающее окно с надписью «Не определено», когда я пытаюсь запустить его в браузере.
Любая помощь будет принята с благодарностью.