JSON, рельсы, ошибка разбора в JavaScript - PullRequest
0 голосов
/ 20 декабря 2010

Мне нужно получить массив ruby ​​в массив javascript, и я получаю ошибку разбора.

var characters = <%= @poop.to_json %>;

Вот так я встраиваю ruby ​​во встроенный javascript, и у меня возникает ошибка разбора. Как мне получить этот рубиновый массив в javascript?

Я встраиваю это в файл .html.erb, так что ruby ​​должен получить переменную до javascript.

Вот что показывает консоль safari:

alt text

Обновление

У меня была форма с тремя полями js, css и html соответственно, поэтому я поместил свой javascript в форму, а затем он поместил ее в заголовок.

<head>
  <%= @game.javascript %>
 </head>

Итак, как вы можете видеть, я встраивал ruby ​​в javascript, который являлся выходом объекта ruby, поэтому причина, по которой ruby ​​сначала не дошел до него, заключается в том, что он уже получил его и обработал <% =%> просто как другая строка.

Ааа, я вас всех проголосовал за помощь. Спасибо!

Ответы [ 3 ]

4 голосов
/ 20 декабря 2010

Вы рассматриваете файл .js как файл .erb - это не так. Файлы JavaScript не анализируются Ruby - все, что в public, отправляется как есть.

Один из способов получить @poop в вашем JavaScript - это создать действие Rails, которое рендерит json, а затем загрузить его с помощью XHR.

Кроме того, вы можете вывести @poop в шаблоне HTML в теге <script>, а затем загрузить содержимое этого тега сценария из вашего JavaScript.

2 голосов
/ 20 декабря 2010

В идеале, нам нужно больше информации, чтобы правильно ответить, но я собираюсь угадать кое-что, чтобы помочь вам ...

Предположение # 1: Вы используете синтаксис erb (те "<% =" и "%>") в файле .js. Они не разбиты Rails ни на что значимое.

То, что вы хотите сделать, это использовать встроенный JS в вашем шаблоне или представлении. Генерирование Javascript из других языков может быть сложным, используйте с осторожностью.

0 голосов
/ 20 декабря 2010
var characters = "<%= @poop.to_json -%>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...