javascript - 如何将 Ruby 数组传递给 Javascript 以制作折线图

标签 javascript ruby-on-rails json graph

我正在尝试制作一个网页以在我的 Ruby on Rails 2.3.14 应用程序中显示折线图。我找到了一个名为 JS Charts 的工具,它允许我使用 Javascript 创建漂亮的图表,但我无法向它发送所需的数据。下面是制作静态线图的方法:

<script type="text/javascript">
  var myData = new Array([1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]);
  var myChart = new JSChart('chartcontainer', 'line');
  myChart.setDataArray(myData);
  myChart.draw();
</script>

我将该代码放入 stats.html.erb 中,它就会显示出来。但是,我需要它来显示我提供的折线图数据。在 Controller 中创建一个二维数组:

>> @a
=> [[1, 395], [2, 244], [3, 223], [4, 210], [5, 238], [6, 223], [7, 275], [8, 31]]

我应该能够在 View 中使用该变量,并将 var myData 设置为它,例如:

var myData = "<%= @a %>";

我尝试了其他方法,例如:

var myData = JSON.parse( "<%= @a.to_json %>" );

但似乎没有任何效果。有什么我可以做的吗?

编辑:

Controller 传递到 View (@a) 的数组存在问题,该数组为空。我能够使用:

var myData = JSON.parse( "<%= @a.to_json %>" );

显示带有传递到 View 中的正确数据的折线图。

最佳答案

看起来你让它工作了,但你可以稍微清理一下:

<%= javascript_tag do %>
  window.myData = <%=raw @a.to_json %>;
<% end %>

或者在 Rails 3 中,您可以精通 HTML5 并使用 data 帮助程序将您的数据添加为某些 html 标记的 att:

<%= content_tag "div", id: "myDiv", data: {stuff: @a} do %>
<!-- some html stuff...-->
<% end %>

然后在 javascript 中(使用 jQuery):

var myData = $('#myDiv').data("stuff")

对于 super 敏锐的人,请查看 this railscast

关于javascript - 如何将 Ruby 数组传递给 Javascript 以制作折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10407638/

相关文章:

ruby-on-rails - 从 hash 打印值在 ruby​​ 中返回 nil

javascript - indexOf 返回-1,为什么?

json - 我如何仅允许特定时间的 aws IAM 权限

java - 有条件地将元素渲染为链接以在 Java 中实现 HAL

javascript - 向 Javascript 传递一个空变量

java - 创建 Android 应用程序的正确方法是什么?

java - 问题包括 JSP 文件

javascript - 如何将此 observe_field 转换为 jquery

javascript - clearTimeout 后出现 UnhandledPromiseRejectionWarning

ruby-on-rails - 如何从 swagger 发送 header 参数