Ruby on rails 试图用ActiveRecord数据填充javascript数组

Ruby on rails 试图用ActiveRecord数据填充javascript数组,ruby-on-rails,Ruby On Rails,所以我用图表来显示最常见的操作系统(如XP、Server2003等),我试图从ActiveRecord中提取这些信息。我有一个节点模型,它有操作系统列 在我的show页面中,这是我在底部看到的内容: var chart = c3.generate({ bindto: '#nodes-os-chart', title: { text: 'Top 5 Operating Systems Detected' }, data: { colu

所以我用图表来显示最常见的操作系统(如XP、Server2003等),我试图从ActiveRecord中提取这些信息。我有一个
节点
模型,它有
操作系统

在我的
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中的一些数据填充columns数组,因此我尝试将其转换为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\u os'
添加了一条路由,以映射回必要的控制器。但是,现在在控制器中,这是我为
node\u os
定义的方法:

  # GET /logs/4/node_os
  def node_os
    return ['Test1','Test2']
  end
Test1和Test2只是示例,但我正在尝试找出实现这一点的最佳方法。当我尝试在浏览器中运行时,会弹出一个“未定义”的弹出窗口

非常感谢您的帮助。

使用以下方法解决了此问题:

基本上,我的
show.html.erb
只进行AJAX调用,其余调用发生在
js.erb
文件中。

使用以下方法解决了这个问题:

基本上,我的
show.html.erb
只进行AJAX调用,其余调用发生在
js.erb
文件中