Javascript Rails JSON Проблема - PullRequest
0 голосов
/ 11 мая 2011

У меня большой json от моего контроллера rails:

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

, и я хочу использовать его в моем javascript в моих представлениях.В более широком смысле я хочу использовать json для получения широты и долготы для построения графика на карте Google.Однако сейчас я просто пытаюсь понять, смогу ли я получить все очки правильно.У меня вопрос:

Какой хороший способ разобрать json в файле javascript?(Примечание: расширение файла по-прежнему html.erb) Я пробовал:

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

, но, похоже, это не работает.Кто-нибудь может помочь?Большое спасибо!

Ответы [ 3 ]

1 голос
/ 27 мая 2011
@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 %>');
1 голос
/ 11 мая 2011

Поскольку JSON - это фактически весь допустимый синтаксис javascript, я часто делаю это:

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

Простейшая вещь, которая могла бы работать.Если вы получаете свой JSON из ненадежного источника, лучше использовать библиотечную функцию для его анализа, что помешает ему выполнить код.Кроме того, обязательно вызовите to_json для вашего окончательного хэша.Вы не хотите просто to_s, что по умолчанию в erb.

0 голосов
/ 15 июля 2014

В 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]}));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...