#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 в представление? Я думаю, мне просто нужна переменная экземпляра, и я могу просто получить к ней доступ из представления?