Javascript 如何将rails数据放入javascrip数组

Javascript 如何将rails数据放入javascrip数组,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一组来自rails db的数据,但我想将其转换为js数组 下面的数组是静态的,所以我想从rails应用程序中获取latitude和longitude的值,并将其转换为一个类似下面的数组 var locations = [ {lat: -31.563910, lng: 147.154312}, {lat: -33.718234, lng: 150.363181}, {lat: -33.727111, lng: 150.371124},

我有一组来自rails db的数据,但我想将其转换为js数组

下面的数组是静态的,所以我想从rails应用程序中获取latitude和longitude的值,并将其转换为一个类似下面的数组

var locations = [
        {lat: -31.563910, lng: 147.154312},
        {lat: -33.718234, lng: 150.363181},
        {lat: -33.727111, lng: 150.371124},
        {lat: -33.848588, lng: 151.209834},
        {lat: -33.851702, lng: 151.216968},]
我试过:

var locations = <%= raw @locations.to_json %>;
var位置=;

但它甚至带来了我不需要的东西

这就是你想要的结果吗

<% count = @locations.count %>
var locations = [
  <% @locations.each_with_index do |loc, idx| %>
    {<%= loc.lat %>, <%= loc.lang %>}<% unless idx + 1 == count %>,<% end %>
  <% end %>
];

变量位置=[
{, },
];

来自db的数据的格式是什么?JSON? 在这种情况下,您应该:

var locations = JSON.parse( <%= raw @locations.to_json %> );
var locations=JSON.parse();

是否需要从集合中构建对象的JS数组

您还可以使用JSON和OpenStruct libs来实现这一点

require 'JSON'
arr = JSON.parse(@locations.to_json, object_class: OpenStruct)
然后可以将数组作为JS对象进行管理

如果您希望构建JS阵列,可以使用类似Rockwells解决方案的方法

var locations = []
<% @locations.each do |loc| %>
  locations.push({lat: "<%= loc.lat %>", lng: "<%= loc.lang %>"});
<% end %>
var位置=[]
位置。推送({lat:,lng:});

是的,是的!但问题是,从每个输出中,它会自动包含一个“;”,例如“{lat:15252.122,lng:1424.222};”;而不是一个简单的逗号({lat:15252.122,lng:1424.222}),这样就不会加载输出!好的,我更新了我的代码来解决这个问题,现在后面应该有一个逗号,它不应该在最后一个元素上打印出来;strData=strData.replace(/;/g,,);var位置=评估(标准数据);一切正常,但由于某种原因,更换不起作用;(你在[]之前和之后使用撇号了吗?你必须有var strData='[…]';是的,我确实使用了它!