2

Следует отметить, что я не очень хорошо разбираюсь в использовании Firebug, но я не нашел ошибок, которые объясняют следующую проблему.Устранение неполадок с ошибками js в Rails?

У меня есть feed.js.erb файл, содержащий следующий код:

var $foos = $('<%= escape_javascript(render(@foos)) %>'); 
$('#container').append($foos); 
$('#pagination_button a').attr('href', '<%= feed_path + '?page=' + @page %>'); 

Когда Аякса вызов сделан второй раз, это, кажется, не в состоянии тихо. Я вижу соответствующий ответ в консоли Firebug, но $foos не изменен, а затем #container никогда не добавляется.

На моей странице html имеется только индикатор загрузки, который он успешно заменяет при первом вызове. Второй вызов запускается из другого javascript (Infinite Scroll).

Если это имеет значение, я заметил, что первый вызов выполняется с автоматически созданным параметром timestamp. После этого я заменяю целевой URL, как вы можете видеть на моем #pagination_button a.

Как отладить это в браузере?

Update: Я использовал Еврорадио, чтобы сделать $foos динамической переменной ($ foos1 ... $ foos2) и заметил, что это тоже не работает. Таким образом, хотя новые @foos видны в ответе консоли, первая строка моего javascript не оценивается.

+0

Как насчет размещения точки останова на одной из этих строк с помощью панели сценариев firebug? – Jords

+0

Я не могу найти способ сделать это, потому что этот скрипт находится внутри ответа HTTP. Он динамически создается моим контроллером Rails после того, как страница html уже отображается. –

+0

Вы не пытаетесь добавить в контейнер дважды с тем же идентификатором элемента, не так ли? – aroth

ответ

3

Как оказалось, Rails не обрабатывает мой второй запрос как JS. Что еще более важно, если JS вызывает исключение, он будет преобразован в текстовый текст as explained here. Steve также показывает, как отлаживать код ajax, эффективно отвечая на оба моих вопроса.