JQuery загружается только при обновлении страницы в приложении Rails 4
Я создал приложение Rails 4 и добавил библиотеку fancybox для всплывающего эффекта изображения. Он отлично работает, но только когда страница обновляется. Если страница не обновляется пользователем, то jQuery не работает вообще. Я попытался протестировать его с помощью небольших методов jquery, но все они работают только после обновления страницы. Я также использую Twitter bootstrap.
мои активы/приложения.js file:
//= 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 ответов:
хорошо, я думаю, что понимаю вашу проблему достаточно, чтобы дать ответ. Дело в использовании turbolinks заключается в том, что большинство плагинов и библиотек, которые привязываются к событию готовности документа, перестают работать, поскольку turbolinks предотвращает перезагрузку страницы браузером. Есть трюки, чтобы исправить эти проблемы, но самый простой способ исправить это использовать jquery.turbolinks.
чтобы использовать это, просто добавьте это в ваш
Gemfile:gem 'jquery-turbolinks'и это в ваш
assets/javascripts/application.jsфайл://= require jquery.turbolinksи вы должны быть хорошо идти.
FYI: ты не нужно использовать turbolinks, но это полезно и это делает запросы быстрее, чтобы избежать полного обновления страницы. Turbolinks извлекает содержимое ссылки, которую вы нажали через AJAX, и отображает ее на той же странице, тем самым устраняя накладные расходы на перезагрузку активов (JS и CSS). Постарайтесь, чтобы ваша страница работала с ним. Используя библиотеку в предыдущем абзаце, у меня не было реального проблемы. Чем больше CSS и JS у вас на странице, тем больше улучшений вы получаете с помощью turbolinks.
у Яна был хороший ответ, и это своего рода дополнение к этому (так что не позволю мне на самом деле комментировать кому-либо во время написания.)
от 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раньше я не добавлял
require jquery.turbolinksв нужном месте в списке, так что это было немного придирчиво. Затем я добавил Это по-новому, и я надеюсь, что это работает лучше.
Я не мог заставить все работать, пока не последовал ответам CodeWalrus и Ian, но для меня это было больше. Как описано на jquery.turbolinks Readme, приказ должен быть очень конкретным.
//= require jquery //= require jquery.turbolinks //= require jquery_ujs // // ... your other scripts here ... // //= require turbolinksи как описано здесь, если вы поместили ссылку javascript приложения в нижний колонтитул по причинам оптимизации скорости, как и я, вам нужно будет переместить его в
<head>тег так, что он загружается до содержимого в<body>метка.
Turbolinks здесь проблема.Турболин добавлены в рельсы, чтобы улучшить производительность веб-страницы.У меня есть это решение работает
<%= link_to "Create New Form", sampleform_path, 'data-no-turbolink' => true %>Подробнее см. этой
Comments