У меня есть кнопка, которую я нажимаю, которая выполняет некоторые JS. Но то, что происходит при первом загрузке страницы, работает, но как только я перехожу на другую страницу и нажимаю кнопку на этой новой странице, она не работает.Как заставить Turbolinks перестать вмешиваться в мой JS?
В документации Turbolinks это нормально - так что я должен внести изменения.
Это частично было покрыто этим RailsCast - http://railscasts.com/episodes/390-turbolinks?view=asciicast - но решение, которое дает Райан, находится в CoffeeScript, и я использую простой старый ванильный JS.
Это мой posts.js
файл:
$(function(){
var toggleSidebar = $("#togglesidebar");
var primary = $("#primary");
var secondary = $("#secondary");
toggleSidebar.on("click", function(){
if(primary.hasClass("col-sm-9")){
primary.removeClass("col-sm-9");
primary.addClass("col-sm-12");
secondary.css('display', 'none');
}
else {
primary.removeClass("col-sm-12");
primary.addClass("col-sm-9");
secondary.css('display', 'inline-block');
}
});
});
$(document).on('page:load');
Per Railscasts, это то, что они предлагают:
ready = ->
$('.edit_task input[type=checkbox]').click ->
$(this).parent('form').submit()
$(document).ready(ready)
$(document).on('page:load', ready)
Когда я пытаюсь это в нижней части моего posts.js
:
$(document).ready();
$(document).on('page:load', ready());
Я получаю эту ошибку:
Uncaught ReferenceError: ready is not defined
Мысли о том, как я могу это получить? Я уверен, что это просто, но у меня очень мало опыта JS и даже меньше с CoffeeScript.
Хм, может отключить turbolinks? :) –
@SergioTulentsev - в стороне от этого .... очевидно :) – marcamillion