将 Ruby 数组传递给 Ruby on Rails 中 Haml 视图中的 JavaScript 代码 (jquery

passing ruby arrays to javascript code (jquery) in a haml view in Ruby on Rails

本文关键字:Ruby 视图 JavaScript 代码 jquery Haml Rails 数组 on      更新时间:2023-09-26

我正在使用jQuery/javascript在haml模板上显示Highcharts图。 下面是一个片段,显示了HighCharts站点中演示代码中的独立图形:

:javascript
  $(document).ready(function() {
    $("#tabs").tabs();
    new Highcharts.Chart({
      chart: {
        renderTo: 'volume_chart'
      },
      title: {
        text: 'Logarithmic axis demo'
      },
      xAxis: {
        tickInterval: 1
      },
      yAxis: {
        type: 'logarithmic',
        minorTickInterval: 0.1
      },
      tooltip: {
        headerFormat: '<b>{series.name}</b><br />',
        pointFormat: 'x = {point.x}, y = {point.y}'
      },
      series: [{            
        data: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512],
        pointStart: 1
      }]
    });
  });

这工作正常。 现在我正在尝试从 show.html.haml 文件中的 ruby/rails 数组设置系列数据,如下所示:

...
- data_array        = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
...
:javascript
  $(document).ready(function() {
  ...
      series: [{            
        data: "#{data_array}",
        pointStart: 1
      }]
    });
  }); 

这给了我以下错误:

undefined method `to_js' for [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]:Array

如何将data_array从我的ruby/rails代码传递到javascript/jquery代码?

感谢任何帮助。

谢谢。

巴拉特

require 'json'
...
"#{data_array.to_json}"
嘿,

在 HAML 中,没有必要使用to_json

   :javascript
     $(document).ready(function() {
       ...
       series: [{            
         data: #{ruby_array},
         pointStart: 1
       }]
     });
    }); 

将完美工作