JQuery ładuje się tylko przy odświeżaniu strony w aplikacji Rails 4
Stworzyłem aplikację Rails 4 i dodałem bibliotekę fancybox dla efektu popup. Działa dobrze, ale tylko wtedy, gdy strona jest odświeżana. Jeżeli strona nie jest odświeżana przez użytkownika to jquery w ogóle nie działa. Próbowałem go przetestować za pomocą małych metod jquery, ale wszystkie działają dopiero po odświeżeniu strony. Używam również Twittera bootstrap.
Moje aktywa/wniosek.plik js:
//= require jquery
//= require jquery_ujs
//= require fancybox
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .
$(document).ready(function() {
$(".fancybox").fancybox();
$("#hand").click(function(){
if($("#check6").is(':visible'))
{
$("#check6").hide();
}
else
{
$("#check6").show();
}
});
});
4 answers
Ok, myślę, że rozumiem twój problem na tyle, by udzielić odpowiedzi. Rzecz w korzystaniu z turbolinks jest taka, że większość wtyczek i bibliotek, które wiążą się ze zdarzeniem document ready, przestaje działać, ponieważ turbolinks uniemożliwia przeglądarce przeładowanie strony. Istnieją sztuczki, aby rozwiązać te problemy, ale najprostszym sposobem na naprawienie tego jest użycie jquery.turbolinks .
Aby go użyć, po prostu dodaj to do swojego Gemfile
:
gem 'jquery-turbolinks'
I to do twojego assets/javascripts/application.js
pliku:
//= require jquery.turbolinks
I powinieneś bądź gotowy.
FYI: tak naprawdę nie potrzebujesz, aby używać turbolinków, ale jest to przydatne i przyspiesza żądania, unikając pełnego odświeżania strony. Turbolinks pobiera zawartość łącza klikniętego przez AJAX i renderuje go na tej samej stronie, eliminując w ten sposób obciążenie zasobów przeładowujących (JS i CSS). Postaraj się, aby Twoja strona działała z nim. Korzystanie z biblioteki w poprzednim akapicie nie miałem żadnych rzeczywistych problemów. Im więcej CSS i JS masz na swojej stronie, tym większy ulepszenie można uzyskać za pomocą turbolinków.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-07 03:10:51
Ian miał dobrą odpowiedź, a ten jest swego rodzaju dodatkiem do tego (więc nie pozwól mi właściwie skomentować nikomu w momencie pisania.)
Z https://github.com/rails/turbolinks/#jqueryturbolinks :
Add the gem [gem 'jquery-turbolinks'] to your project, then add the following line to your JavaScript manifest file, after jquery.js but before turbolinks.js:
//= require jquery.turbolinks
Zanim nie dodałem require jquery.turbolinks
we właściwym miejscu listy, więc było to trochę wybredne. Następnie dodałem ten nowy sposób i mam nadzieję, że działa lepiej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 08:21:15
Nie mogłem działać, dopóki nie zastosowałem się do odpowiedzi Codewalrusa i Iana, ale dla mnie było to coś więcej. Jak opisano na jquery.turbolinks Readme , kolejność musi być bardzo konkretna.
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//
// ... your other scripts here ...
//
//= require turbolinks
Również, jak opisano tutaj , jeśli umieściłeś link JavaScript aplikacji w stopce ze względu na optymalizację prędkości, jak miałem, trzeba będzie przenieść go do znacznika <head>
tak, że ładuje się przed treścią w znaczniku <body>
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-21 17:36:22
Turbolinki są tutaj problemem.Turbolinks są dodawane w rails, aby poprawić wydajność strony internetowej.Mam To rozwiązanie działa
<%= link_to "Create New Form", sampleform_path, 'data-no-turbolink' => true %>
Aby uzyskać więcej szczegółów, zapoznaj się z this
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:04