2011-11-19 1 views
9

Это очень странная проблема. У меня есть приложение rails, в котором я заменяю одно частичное на странице другим, используя UJS. В последнее время он прекратил работу, поэтому я начал регистрироваться на протяжении всего процесса, чтобы увидеть, где он сломался. Вот что я нашел:rails ujs - javascript не исполняется

  • После того как ссылка была нажата, консоль rails сообщает мне, что все визуализировано, включая все частичные, и возвращает 200 OK.
  • помещает в действиях контроллера возвращает штраф
  • помещает в respond.do блок возвращается тонкодисперсных
  • помещает в .js.erb файл возвращает штраф

Это означает, что он становится все способ запуска файла .js.erb и оценки рубина без ошибок. Но вот что странно - ни один из javascript не выполняет. Когда я запускаю предупреждение ('hello?') В файле .js.erb, он не выполняется.

Неужели кто-нибудь сталкивался с этой проблемой раньше? Кажется чрезвычайно странным, что он проведет оценку erb, но не js. И ошибок в консоли js также нет.

Для записи у меня есть: очистка кеша, перезапуск браузера, перезапуск приложения rails и ничего не изменилось.

Пример кода:

# view 
link_to 'example', some_path, :remote => true 

# controller 
respond_to do |format| 
    format.js 
end 

# .js.erb file 
alert('this never shows up'); 
<% puts 'this shows up in the rails console' %> 

Благодаря Су много для всех, кто может пролить немного света на эту странную проблему!

+0

Что-нибудь в консоли JS? –

+0

«И никаких ошибок в консоли js тоже нет». –

+1

Извините; Я автоматически игнорирую предложения, начинающиеся с союзов. –

ответ

9

Есть вероятность, что в js есть ошибка? Запрос ajax обычно не отображается в консоли js. http://www.alfajango.com/blog/rails-js-erb-remote-response-not-executing/

(Похожая среда работает отлично на моей машине)

+0

Ха-ха справа, он отображается на вкладке сети инспектора хрома (в XHR, как я уже упоминал). Консоль javascript остается пустой. Это отличный пост, хотя, я проверю его и посмотрю, разрешит ли он это! Спасибо ~ –

+0

В этой статье говорится, чтобы проверить, обрабатывается ли она как «JS» - для меня это говорит о том, что она обрабатывается как JS. Поэтому я нажал альтернативную ссылку, которую вы предоставили, и это дало мне ошибку 404. –

+0

Я также понял, что тоже :(но нижняя часть статьи дает возможность протестировать отображаемые js для ошибок в firebug. Это может дать вам некоторое представление о том, что происходит. –