Я создаю приложение Rails 4, и у меня есть несколько разбросанных js файлов, которые я пытаюсь включить в "путь рельсов". Я переместил jquery-плагины в /vendor/assets/javascripts, и я обновил манифест (application.js), чтобы потребовать их. Когда я загружаю страницы локально, я вижу, что они отображаются правильно.
Однако я получаю непоследовательное поведение от одного из скомпилированных скриптов. У меня есть специфический для контроллера файл js, называемый projects.js, на который ссылается в application.js с помощью require_tree .
:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap.min
//= require jquery.form.min
//= require_tree .
Я вижу, что файл включен правильно, и он работает... в половине случаев. Другая половина времени, материал в projects.js, кажется, ничего не делает (это в основном jquery-анимация и некоторые запросы ajax). Когда это не сработает, я нажимаю кнопки пару раз, ничего не произойдет, и тогда я выброшу эту ошибку:
Uncaught TypeError: Cannot read property 'position' of null
turbolinks.js?body=1:75
Это никогда не случалось, когда скрипты находились в отдельных представлениях (неправильный путь), поэтому я уверен, что проблема не в моем javascript-коде. Еще одна потенциально важная информация заключается в том, что материал в проектах .js завернут в $(document).ready(function(){
. Кроме того, я тестирую в режиме разработки, поэтому javascripts и css не объединены конвейером активов.
Любая идея, что здесь происходит? Я новичок в Rails, но я сделал все возможное, чтобы следовать всем соглашениям.
Обновление
Это предсказуемо, когда мои сценарии проекта не работают. Загрузка первой страницы работает каждый раз. Затем я нажимаю одну ссылку на новую страницу, которая использует мое поведение project.js, а вторая страница никогда не работает. Я нажимаю несколько раз и в конечном итоге бросаю ошибку выше. Я все еще не уверен, почему, но я подозреваю, что это связано с турбосвязкой.