Подтвердить что ты не робот

Twitter bootstrap неожиданно не работает

Мне было интересно, может ли кто-нибудь помочь мне. мое загрузочное меню бутстрапа внезапно перестало работать. Понятия не имею почему. он работал раньше. я не касался своих взглядов своими представлениями макетов, поэтому я думаю, что проблемы там нет. 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 .

Я думаю, возможно, это связано с моими конфигурационными файлами?

4b9b3361

Ответ 1

пришлось перемещать

//= require jquery

ниже

//= require bootstrap

внутри

application.js

Ответ 2

Если прекомпиляция активов не работает, попробуйте также удалить предварительно скомпилированные активы

rake assets:clean

Я обнаружил, что выпадающее js, загружаемое дважды в конвейер активов, похоже, мгновенно открывает и закрывает раскрывающееся меню, но отлично работает в Heroku/Production.

Ответ 3

У меня была та же проблема, и я нашел два способа исправить ее.

Сначала позвольте мне рассказать вам о моей настройке: я выполнил инструкции на загрузочном сайте и загрузил 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, и снова это сработало!

Ответ 4

Я не понимаю этого, но переупорядочение // = требует jquery и // = требует, чтобы bootstrap, по-видимому, исправил проблему дважды для меня. Первый движущийся бутстрап над jquery, как Саша, предложил его исправить. Затем я сделал больше работы и подготовился к развертыванию с использованием jruby на рельсах 3.2.3. Прекомпиляционные активы, warble и выпадающие списки прекращают работать как в области разработки, так и в производстве. Удалите public/assets, а также некоторые .class файлы и файлы в tmp. Нет эффекта. Наконец, я переместил заказ в application.js обратно к тому, что было до последнего эпизода сбоя, то есть jquery перед загрузкой, и выпадающие меню снова работают.

Может ли изменение application.js инициировать перестройку некоторого кеша или какой-то процесс за кулисами, являющийся источником проблемы? В следующий раз, когда это произойдет, я попробую тривиальное изменение в application.js и посмотрю, что это делает.

Ответ 5

Я испытывал это на своей машине разработки, но мой производственный сервер работал нормально.. Я заметил, что при изменении порядка js в application.js исправляется проблема в разработке (выпадающие меню снова работают), будьте осторожны, поскольку это убило мои выпадающие списки в производстве. Мне пришлось вернуться и вернуть их обратно, чтобы они снова начали работать. Пока я просто временно меняю их в dev, когда мне нужно.

Ответ 6

Предварительная компиляция активов снова устранила проблему для меня

Ответ 7

У меня тоже была эта проблема... и это было связано с рельсами turbolinks. При загрузке начальной страницы выпадающие списки не будут работать, но после обновления они будут. И это связано с тем, что с помощью турбо-ссылок некоторые элементы Dom могут не загружаться/перезагружаться каждый раз. Итак, мое падение перестало работать последовательно (между прочим). Рельсы 4 исправить это - добавить jquery.turbolinks gem https://github.com/kossnocorp/jquery.turbolinks. Одна вещь с этим драгоценным камнем, который я нашел (и позже встретил в каком-то блоге), состоит в том, что тег javascript должен находиться внутри головы. README не упоминает об этом... но

Ответ 8

Я нашел альтернативу! все эти решения не работали для меня. Вместо того, чтобы вызывать выпадающее меню при нажатии, я использовал его вместо зависания. положить в нижней части страницы теги 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})

Ответ 10

Прекомпиляция активов не сработала. Включение раскрывающегося списка перед тем, как jquery работал в разработке, но не в производстве Удаление раскрывающегося списка все еще работало в разработке: -O

Ввод правильного порядка и удаление всего в папке public/assets заставили его работать в разработке.

Ответ 11

Ticket # 5145 недавно был закрыт для этого. Исправление было отменено, но в конце было поставлено специальное решение, и оно работает для меня. Не забудьте также очистить кеш браузера.

Ответ 12

Перемещение //= 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".

Ответ 13

У меня была эта ошибка, и, оказывается, мой CSS не позволял выпадающему меню работать.

В частности, у меня было "переполнение: скрыто"; в моем заголовке nav CSS. Удаление этого решения проблемы.