Ruby和Javascript:传递一个Ruby数组作为Javascript变量

Ruby and Javascript: passing a Ruby array as a Javascript variable

本文关键字:Javascript Ruby 一个 数组 变量      更新时间:2023-09-26

我正在尝试动态绘制谷歌地图并在其上放置标记。在我的控制器中,我组装了一个包含企业名称、经度、纬度和z索引的数组。

我有一个Ruby数组,可用于我的Rails视图:

@locations = [["Location One",36.0552,-114.928,1]]

当我试图在某些Javascript中使用该数组时:

var loc = <%= @locations %>

我看到这个在视图源:

var loc = [[&quot;Location One&quot;,36.0552,-114.928,1]]

为了让映射显示变量,需要这样读:

var loc = [['Location One',36.0552,-114.928,1]]

在数组的第一个元素周围使用完整的引号。如果我将最后一行硬编码到Javascript中,地图就会正确呈现。这似乎真的是";把事情搞砸的标签

在地图上将有多个位置,所以我认为数组的数组将是最好的方式来获得所需的数据到我的视图。

我怎样才能做到这一点?谢谢。

编辑根据DNNX的评论更正。

我认为你需要在渲染前将其转换为json (JavaScript的一个子集):

require "json"
...
var loc = <%= @locations.to_json.html_safe %>

你需要使用html_safe来防止转义引号