2015-07-11 2 views
2

Когда моя страница загружается в первый раз, выполняется код в /assets/javascript/home.js, который позиционирует мою навигационную панель с помощью Bootstraps affix.Выполнять javascript каждый раз, когда маршрут попадает в рельсы

$('.navbar').affix({ 
    offset: { 
    top: function() { 
     return this.bottom = $('.hero').outerHeight(true); 
    } 
    } 
}); 

Когда я иду на другой маршрут, такие как /blog, я не хочу, чтобы этот код выполнить и хочу, чтобы мой статический CSS, чтобы сделать, который прекрасно работает. Проблема в том, что когда я вернулся на домашний маршрут (/), JavaScript не выполняется снова, и мой навигатор использует свой естественный CSS. Если я обновляюсь в этот момент, страница полностью перезагрузится, и моя навигационная панель будет правильно установлена.

Я думаю, что проблема связана с турбо-ссылками, но я недостаточно опытна с Rails для решения этой проблемы. Надеюсь, кто-то может пролить свет!

+0

Найдено решение из этого стека переполнения пост http://stackoverflow.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links – Luca

ответ

0

Если вы используете turbolinks, вы можете сделать что-то вроде этого:

 

$(function() { 
    if (window.location.pathname === '/') { 
    // run your code 
    } 
}); 
 

Turbolinks изменяет $ (п) (что ярлык $ (документ) .ready) для запуска после переключения другой путь, поэтому он будет запускать этот код при каждом изменении пути.

+0

Я не уверен, если Я использую turbolinks. Я просто знаю, когда создал свой homecontroller. Он сделал home.js в моей папке assets/javascripts. – Luca

+0

Я завернул код в свой блок, и он все еще не выполняется, когда я возвращаюсь к маршруту. – Luca

+0

Найденное решение здесь http://stackoverflow.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links – Luca

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