2011-05-11 63 views
25

我試圖讓我的JSON從我的控制器到我的視圖。在我的控制器我做:Rails中奇怪的JSON Javascript問題

@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 

我不明白的& 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%>但是當我做var json = JSON.parse(stuff),它給了我一個非法的令牌錯誤。

有人可以幫助我嗎?非常感謝!

回答

48

這是Rails的編碼的HTML,你的字符串是默認的Rails 3

您需要標記您的JSON作爲html_safe

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

注意.to_s是必要的,因爲as_json給哈希,而不是串。你可以這樣做:

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

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

非常感謝!現在它出現在它應該是的源頭中。如果你不介意,你能舉個例子說明我如何訪問JSON中的每個對象?我真的很感激它! – readmymsg123 2011-05-11 21:14:13

+0

沒關係。我知道了。非常感謝!!! – readmymsg123 2011-05-11 21:19:40

+0

不錯!對不起,我沒有早點回復。 – Laas 2011-05-12 12:24:53

0

我想你需要把它引號,然後你可以要求jquery將字符串解析成JSON。