У меня есть javascript, встроенный в представление в Rails, которое использует Turbolinks, например:
ViewX.html.haml:
.blah
Blah
:javascript
$(function() {
$(".blah").offset().top;
});
Все работает нормально, когда я загружаю ViewX. Но затем, когда я перехожу к View Y, я получаю следующую ошибку в консоли:
Uncaught TypeError: Cannot read property 'top' of undefined
И эта ошибка сохраняется, когда я перехожу к другим представлениям. Он исчезает при жестком обновлении, но возвращается в следующий раз, когда я визуализирую ViewX.
Мой вопрос: как мне сделать так, чтобы некоторые фрагменты JS отображались только для определенного представления и не загрязняли остальную часть приложения?
ИЗМЕНИТЬ
Хорошо, я нашел способ, который является своего рода хаком, но закрытым хаком. Измените ViewX.html.haml на:
ViewX.html.haml:
.blah
Blah
%script{:type => "text/javascript", 'data-turbolinks-eval' => 'false'}
:plain
$(function() {
$(".blah").offset().top;
});