Rails 3 Jquery не выполняется после удаления общедоступных/активов

На днях я столкнулся с некоторыми проблемами Ajax, когда формы отправлялись несколько раз одним нажатием кнопки отправки. Я немного просмотрел, и кто-то порекомендовал мне удалить мою папку public/assets, я сделал это и перезапустил свой сервер только для того, чтобы обнаружить, что некоторые из моих библиотек Javascript больше не работают правильно...

На самом деле это очень странно, потому что я могу посмотреть исходный код с помощью отладчика Firebug и убедиться, что он определенно загружен. Я пытался очистить свой кеш, я пытался прокомпилировать свои активы в режиме разработки, я пытался перезапустить свою систему, но ничего из этого не сработало. Мой Javascript просто не работает и молча терпит неудачу после удаления моей папки public/assets.  — см. редактирование

Краткий обзор того, как я создал эту проблему:

  1. Сервер остановлен
  2. Удалены общедоступные ресурсы/ресурсы
  3. Перезапустил сервер и заметил проблему
  4. Кэш очищен
  5. Сервер снова остановился и попытался выполнить предварительную компиляцию ресурсов

Дополнительные вещи, которые я пробовал:

  1. Установите config.serve_static_assets = false в development.rb, снова выполните предварительную компиляцию и перезапустите сервер
  2. Подтверждено, что я работаю в режиме разработки через rails s -e development

  3. Удалена моя папка tmp/cache

Дополнительная информация:

  • Я использую Rails версии 3.1.3

  • Недавно я начал использовать Gem, для которого в процессе разработки требовалось установить для config.cache_classes значение true. Я убедился, что проблема не в этом, установив для него значение false и повторив тестирование.

Изменить

Дальнейшее тестирование показало, что мои изменения предотвратили срабатывание следующего кода:

<script type="text/javascript">
   $(document).ready(function() {
     alert("Hello world!")
   });

</script>

Но это отлично работает:

<script type="text/javascript">
   alert("Hello world!")
</script>

Первоначально я думал, что файлы загружаются не из моего конвейера активов, но вместо этого похоже, что мои изменения вызвали какой-то конфликт за кулисами. Я удалил require_tree из своего файла application.js и попытался загрузить библиотеки вручную, чтобы обнаружить, что они снова начали работать, это не идеальное решение для меня.


person Noz    schedule 03.08.2012    source источник
comment
Кажется, что-то заставило мои функции jQuery(document).ready(function($) {...}); не срабатывать....?   -  person Noz    schedule 03.08.2012


Ответы (1)


Виновника нашли, двух зайцев сразу. Один из моих файлов JavaScript требовал как jquery, так и jquery_ujs во второй раз, когда он уже требовался в моем файле application.js, что было причиной моей упомянутой проблемы с Ajax. В том же файле запускался скрипт, который не был заключен в готовую оболочку документа jquery, которая, казалось, сломала все остальное.

Я считаю, что проблема возникла только после того, как я удалил свою папку public/assets, потому что в ней хранилась более старая версия этого кода, в которой, возможно, не было этих проблем.

person Noz    schedule 03.08.2012