Рубин на рельсах 4.0 + JavaScript не загружается

0

У меня есть файл javascript под названием "front.js", который загружается из "application.js", как обычно, с помощью этого кода:

//= require front

Внутри "front.js" у меня есть много функций, которые я хочу запустить, когда документ будет готов следующим образом:

$(document).ready(function() {
  $("#test").click(function(event){
    ...
  });
});

Но проблема в том, что "front.js" загружается только при обновлении страницы вручную (ctrl + r/f5), а не при переходе со страницы на страницу, поэтому мой код javascript не может быть выполнен по желанию. Возможно, это происходит от turbolinks, я не знаю, как справиться с этой проблемой. Когда я помещаю скрипты непосредственно в html файлы, он работает, но это определенно не так.

Может ли кто-нибудь помочь мне в этом, пожалуйста?

Теги:
ruby-on-rails-4

3 ответа

3
Лучший ответ

Есть три способа, которыми вы можете это сделать.

а. Вы можете обернуть свой код jquery внутри функции, а затем вызвать эту функцию при загрузке страницы. Если ваша функция готова, вы можете сделать следующее:

$(document).ready(ready);
$(document).on('page:load', ready);

б. Вы можете использовать событие jquery live или событие "on":

$(document).on("click","#test",function(){
 // your code
});

с. Вы можете использовать jquery-turbolinks gem, который привяжет события Rails Turbolink к событиям document.ready, чтобы вы могли написать свой jQuery обычным способом. Для получения дополнительной информации см. Здесь

  • 0
    Большое спасибо !! :)
2

Это из-за турбовинтов, сделайте это вместо этого

var ready;
ready = function() {
  $("#test").click(function(event){
    ...
  });
};
$(document).ready(ready);
$(document).on('page:load', ready);
1

У меня была такая же проблема при использовании основы в моем проекте, вы можете отключить turoblinks, не требуя turbolinks в вашем файле application.js, и это должно решить проблему.

  • 0
    Также не забудьте извлечь ссылки на турболинки в таких местах, как application.html.erb. Выполните рекурсивный поиск grep в вашем проекте, чтобы убедиться, что вы удалили все следы этой «функции», и ваш JS может начать нормально работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню