Rails中奇怪的JSON Javascript问题

时间:2011-05-11 20:47:16

标签: javascript ruby-on-rails ruby json

我正试图从我的控制器获取我的JSON到我的视图。在我的控制器中我正在做:

@nodes = Node.all
@json = @nodes.as_json(:only => [:ID, :Lat, :Lon]) 

在我看来,我尝试过:

1) var stuff = <%= @json %>
2) var stuff = <%= @json.to_json %>
3) var stuff = <%= @json.to_json.to_json %>

所有这些都给了我一个错误。我通常得到"Unexpected Syntax Error &" or "Unexpected Syntax Error {"

我也尝试过使用jquery并在控制器中使用respond_to,但这似乎也不起作用。

我的想法是让json访问视图不应该是一个大问题,不应该需要jQuery,目前,我的页面源代码如下:

var stuff = [{&quot;node&quot;:{&quot;ID&quot;:1301499692582,&quot;Lat&quot;:42.3605063113369,&quot;Lon&quot;:-71.0870862191138}},{&quot;node&quot;:{&quot;ID&quot;:1301499691515,&quot;Lat&quot;:42.3605147089149,&quot;Lon&quot;:-71.0870533282532}},{&quot;node&quot;:{&quot;ID&quot;:1301431075499,&quot;Lat&quot;:42.3605456103,&quot;Lon&quot;:-71.0875239075536}} etc

我不理解&amp; quot符号(可能是语法错误的来源)但是当我执行渲染:json => @nodes.to_json时,页面会呈现一个有效的普通json:

[{"node":{"ID":1301499692582,"Lat":42.3605063113369,"Lon":-71.0870862191138}},{"node":{"ID":1301499691515,"Lat":42.3605147089149,"Lon":-71.0870533282532}},{"node":{"ID":1301431075499,"Lat":42.3605456103,"Lon":-71.0875239075536}}

注意:我也尝试过var stuff = '<%= @json.to_json%&gt;但是当我var json = JSON.parse(stuff)时,它会给我一个非法的令牌错误。

有人可以帮我这个吗?非常感谢!

2 个答案:

答案 0 :(得分:52)

这是Rails html编码你的字符串,这是Rails 3中的默认值。

您需要将JSON标记为html_safe

var stuff = <%= @json.to_s.html_safe %>

请注意,.to_s是必需的,因为as_json会给Hash而不是字符串。你可以这样做:

# in controller
@json = @nodes.to_json(:only => [:ID, :Lat, :Lon]) 

#and in view
var stuff = <%= @json.html_safe %>

答案 1 :(得分:0)

我认为你需要在它周围加上引号,然后你可以让jquery将字符串解析成JSON。