Попытка заполнить массив javascript данными ActiveRecord - PullRequest
1 голос
/ 13 апреля 2019

Поэтому я использую диаграмму для отображения наиболее распространенных операционных систем (например, 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 - просто примеры, но я пытаюсь найти лучший способ сделать это.У меня появляется всплывающее окно с надписью «Не определено», когда я пытаюсь запустить его в браузере.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 13 апреля 2019

Решил это с помощью этого: https://medium.com/@ryannovas/pass-a-nested-array-from-rails-to-js-41f021eef459.

В основном мой show.html.erb просто делает вызов AJAX, а остальное происходит в файле js.erb.

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