Ответ 1
пришлось перемещать
//= require jquery
ниже
//= require bootstrap
внутри
application.js
Мне было интересно, может ли кто-нибудь помочь мне. мое загрузочное меню бутстрапа внезапно перестало работать. Понятия не имею почему. он работал раньше. я не касался своих взглядов своими представлениями макетов, поэтому я думаю, что проблемы там нет. im довольно уверен, что это связано с моим javascript, но я не знаю, откуда он.
мой файл gem...
gem 'rails', '3.2.3'
gem 'bootstrap-sass', '2.0.1'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.5'
gem 'devise'
gem 'carrierwave'
gem 'rmagick'
gem 'delayed_job_active_record'
gem 'daemons'
gem 'make_voteable'
gem 'admin_data'
gem 'indextank'
и мое приложение application.js...
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require bootstrap-dropdown
//= require bootstrap
//= require_tree .
Я думаю, возможно, это связано с моими конфигурационными файлами?
пришлось перемещать
//= require jquery
ниже
//= require bootstrap
внутри
application.js
Если прекомпиляция активов не работает, попробуйте также удалить предварительно скомпилированные активы
rake assets:clean
Я обнаружил, что выпадающее js, загружаемое дважды в конвейер активов, похоже, мгновенно открывает и закрывает раскрывающееся меню, но отлично работает в Heroku/Production.
У меня была та же проблема, и я нашел два способа исправить ее.
Сначала позвольте мне рассказать вам о моей настройке: я выполнил инструкции на загрузочном сайте и загрузил bootstrap-dropdown.js. Я положил его в активы /javascripts. Мой файл application.js выглядит следующим образом:
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
Выпадающие списки не работают.
Я заметил в источнике страницы, что тег script для bootstrap-dropdown.js появился дважды: (Я сократил ненужные данные для краткости)
<script type="text/javascript" src="/assets/jquery.js?body=1">
<script type="text/javascript" src="/assets/jquery_ujs.js?body=1">
<script type="text/javascript" src="/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1">
<script type="text/javascript" src="/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1">
<script type="text/javascript" src="/assets/twitter/bootstrap.js?body=1">
<script type="text/javascript" src="/assets/bootstrap-dropdown.js?body=1">
<script type="text/javascript" src="/assets/bootstrap.js?body=1">
Итак, я удалил строку //= require_tree .
из application.js, перезапустил сервер, и выпадающее меню сработало!
Затем я вернул строку //= require_tree .
и вместо этого удалил файловые ресурсы /bootstrap -dropdown.js, и снова это сработало!
Я не понимаю этого, но переупорядочение // = требует jquery и // = требует, чтобы bootstrap, по-видимому, исправил проблему дважды для меня. Первый движущийся бутстрап над jquery, как Саша, предложил его исправить. Затем я сделал больше работы и подготовился к развертыванию с использованием jruby на рельсах 3.2.3. Прекомпиляционные активы, warble и выпадающие списки прекращают работать как в области разработки, так и в производстве. Удалите public/assets, а также некоторые .class файлы и файлы в tmp. Нет эффекта. Наконец, я переместил заказ в application.js обратно к тому, что было до последнего эпизода сбоя, то есть jquery перед загрузкой, и выпадающие меню снова работают.
Может ли изменение application.js инициировать перестройку некоторого кеша или какой-то процесс за кулисами, являющийся источником проблемы? В следующий раз, когда это произойдет, я попробую тривиальное изменение в application.js и посмотрю, что это делает.
Я испытывал это на своей машине разработки, но мой производственный сервер работал нормально.. Я заметил, что при изменении порядка js в application.js исправляется проблема в разработке (выпадающие меню снова работают), будьте осторожны, поскольку это убило мои выпадающие списки в производстве. Мне пришлось вернуться и вернуть их обратно, чтобы они снова начали работать. Пока я просто временно меняю их в dev, когда мне нужно.
Предварительная компиляция активов снова устранила проблему для меня
У меня тоже была эта проблема... и это было связано с рельсами turbolinks. При загрузке начальной страницы выпадающие списки не будут работать, но после обновления они будут. И это связано с тем, что с помощью турбо-ссылок некоторые элементы Dom могут не загружаться/перезагружаться каждый раз. Итак, мое падение перестало работать последовательно (между прочим). Рельсы 4 исправить это - добавить jquery.turbolinks gem https://github.com/kossnocorp/jquery.turbolinks. Одна вещь с этим драгоценным камнем, который я нашел (и позже встретил в каком-то блоге), состоит в том, что тег javascript должен находиться внутри головы. README не упоминает об этом... но
Я нашел альтернативу! все эти решения не работали для меня. Вместо того, чтобы вызывать выпадающее меню при нажатии, я использовал его вместо зависания. положить в нижней части страницы теги script. код от: http://codedecoder.wordpress.com/2013/10/21/bootstrap-drop-down-menu-not-working-rails/
$(document).ready(function(){
$('.navbar .dropdown').hover(function() {
$(this).find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();
}, function() {
$(this).find('.dropdown-menu').first().stop(true, true).delay(100).slideUp()
});
n})
См. Rails 3.1 Assets - странное обслуживание в разработке
есть ошибка, в которой сжатая версия включается в режим отладки в application.js
Прекомпиляция активов не сработала. Включение раскрывающегося списка перед тем, как jquery работал в разработке, но не в производстве Удаление раскрывающегося списка все еще работало в разработке: -O
Ввод правильного порядка и удаление всего в папке public/assets заставили его работать в разработке.
Ticket # 5145 недавно был закрыт для этого. Исправление было отменено, но в конце было поставлено специальное решение, и оно работает для меня. Не забудьте также очистить кеш браузера.
Перемещение //= require jquery
ниже //= require bootstrap
и обновление gem 'bootstrap-sass'
, до 2.3.0.1, решили мою проблему.
Я хочу добавить, что решение, о котором я упоминал выше, работает только на Localhost, но не на Heroku. Решение для обоих в моем случае было:
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
gem bootstrap-sass
, 2.3.0.1
и <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
должны быть внутри
" _header.html.erb" и удалите с " application.html.erb".
У меня была эта ошибка, и, оказывается, мой CSS не позволял выпадающему меню работать.
В частности, у меня было "переполнение: скрыто"; в моем заголовке nav CSS. Удаление этого решения проблемы.