Javascript Rails JSON Problem



我的rails控制器有一个很大的json:

@json = {:Nodes => @nodes.as_json(:only => [:ID, :Lat, :Lon])}

我想在我的视图中的 JavaScript 中使用它。在更大的范围内,我想使用 json 来检索纬度和 lon,以便在 Google 地图上绘制。但是,现在,我只是想看看我是否可以正确获得所有积分。我的问题是:

解析 javascript 文件中的 json 的好方法是什么?(注意:文件的扩展名仍然是html.erb)我试过:

var stuff = eval('(' + <%= @json %> + ')'); 

但这似乎不起作用。谁能帮忙?非常感谢!

由于JSON实际上都是合法的JavaScript语法,所以我经常这样做:

var stuff = <%= @json_hash.to_json %>;

最简单的事情可能奏效。如果要从不受信任的源获取 JSON,最好使用库函数来解析它,这将阻止它执行代码。此外,请务必在最终哈希值上调用to_json。您不想只是to_s它,这是erb中的默认值。

@json = {:Nodes => @nodes.map({|n| [n[:ID], n[:Lat], n[:Lon]] })}.to_json

使用原型,您可以这样做:

var stuff = '<%= raw @json %>'.evalJSON();

或使用jquery:

var stuff = jQuery.parseJSON('<%= raw @json %>');

在 Rails 4 中,所有这些解决方案都不适合我,所以我做了这个:

var consumers;
consumers = <%= @consumers.to_json.html_safe %>;

因此,consumers[0]生成Object(模型 Rails),您可以在对象中进行迭代转换,例如:

function consumersRubyToJavascriptArray(json){
    for (var i = 0; i< json.length; i++) {
        consumers.push(new Consumer({ id: json[i][0], name: json[i][2], phone: json[i][3], cpf: json[i][4]}));
    }
}

最新更新