Подтвердить что ты не робот

Проблема с JSON Javascript в Rails

Я пытаюсь получить мой 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 и использовать response_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), это дает мне незаконную ошибку токена.

Может кто-нибудь, пожалуйста, помогите мне с этим? Большое спасибо!

4b9b3361

Ответ 1

Это 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 %>

Ответ 2

Мне кажется, вам нужно помещать кавычки вокруг него, тогда вы можете попросить jquery проанализировать строку в JSON.