2016-02-06 2 views
1

У меня есть приложение rails с библиотекой baguetteBox для всплывающего эффекта изображения, но оно работает правильно только после обновления страницы. Я знаю, что его из-за turbolinks, поэтому я установил jquery-turbolinks gem, но он все еще не работает. // требуется, чтобы jquery.turbolinks находился в нужном месте.Rails turbolinks проблемы с window.onload

// 
    //= require jquery 
    //= require jquery.turbolinks 
    //= require jquery_ujs 
    //= require baguetteBox.min 
    //= require turbolinks 
    //= require_tree . 

И у меня есть этот кусок кода в нижней части шоу зрения

<script> 
    window.onload = function() { 
    baguetteBox.run('.step_div'); 
    }; 
</script> 

для инициализации сценария.

Любые идеи?

ответ

8

Вам нужно вызвать вещи немного по-разному для turbolinks:

var myFunc = function() { 
    baguetteBox.run('.step_div'); 
}; 

$(document).ready(myFunc); 
$(document).on('page:load', myFunc); // Classic Turbolinks 
$(document).on('turbolinks:load', myFunc); // Turbolinks 5 

Таким образом, ваша функция будет вызываться на стандартной странице готового триггера, а также при turbolinks загружает страницы в память без фактического обновления страницы , Очевидно, что вам нужно включить триггер событий turbolinks для соответствующей версии turbolinks, которую вы используете.

Посмотрите здесь для других событий, вызванных turbolinks 5: https://github.com/turbolinks/turbolinks#full-list-of-events

Для оригинальных turbolinks, документация здесь: https://github.com/rails/turbolinks/#events

+0

Спасибо за ссылки, я upvoted. У вас есть дополнительные ссылки для Turbolinks5? –

+0

Ничего сверх полезного вне документации и исходного кода, доступных в связанном репозитории. Это должно быть выпущено с Rails 5, я считаю. – Jon

+0

Спасибо, я посмотрел - кажется, основные изменения - это крючки, поэтому я должен буду следить. Спасибо за головы, я кое-что узнал +1 –

Смежные вопросы