JSON с Rails

#ruby-on-rails #ruby #json

#ruby-on-rails #ruby #json

Вопрос:

Кто-нибудь, пожалуйста, помогите с этим!!!

Я пытаюсь просто проанализировать мой объект json в javascript в rails, и, похоже, ничего не работает.

История в контроллере заключается в:

 def map 
    @nodes = Node.all
    @json = {"Nodes" => @nodes.as_json(:only => [:ID, :Lat, :Lon])}
end
  

На мой взгляд, у меня простой javascript:

 <script type="text/javascript">
var stuff = <%= @json %>;
var json = JSON.parse(stuff);
alert("text");
</script>
  

Я просто пытаюсь посмотреть, выполняется ли код в первых двух строках с предупреждающим сообщением, но это никогда не срабатывает, всегда выдавая мне неожиданную ошибку токена (обычно двоеточие или { ). Я также пробовал использовать метод eval, но это также не работает. Может кто-нибудь, пожалуйста, помочь мне разобрать json в javascript? Я был бы бесконечно благодарен….

Ответ №1:

вы можете использовать свой текущий подход, есть несколько исправлений, которые вам нужны, чтобы заставить его работать

@json здесь не json, это хэш, и когда вы присваиваете его переменной javascript, это выглядит как

stuff = {"Nodes" => node value} here => не принимается в javascript, таким образом, это недопустимый объект json.

вам нужно преобразовать хэш-объект в json, например

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

Комментарии:

1. Привет, Нарен, я попробовал это в своем коде, и это выдает мне неожиданную ошибку токена, если я пытаюсь проверить элемент в Google Chrome. Есть идеи о том, что происходит?

Ответ №2:

Проверьте это http://guides.rubyonrails.org/layouts_and_rendering.html Раздел рендеринга json.

 render :json => @nodes
  

Комментарии:

1. Как рендеринг передает json в представление? Я думаю, мне просто нужна переменная экземпляра, и я могу просто получить к ней доступ из представления?