Вопрос по ruby-on-rails, twitter-bootstrap, drop-down-menu – загрузчик твиттера выпадающий вдруг не работает

37

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

мой драгоценный файл ...

<code>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'
</code>

и мое application.js ...

<code>//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require bootstrap-dropdown
//= require bootstrap
//= require_tree .
</code>

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

noooooo! но, удалив мои jquery, это ломает мои другие вещи. есть идеи, что делать? Sasha
JQuery идет первым всегда, иначе ваши плагины начальной загрузки не будут работать, так что это нечто другое. Какую версию JQuery вы загружаете? Andres Ilich
я починил это. по какой-то причине ... // = требуют, чтобы jquery нарушал его Sasha
Хм, не слишком уверен, но я думаю, что это связано с вашим js, вы, кажется, включаете свободный плагин bootstrap-dropdown.js, а также пакет плагинов bootstrap.js (который поставляется со всеми плагинами, уже включенными Таким образом, нет необходимости включать свободные плагины), что, как известно, вызывает проблемы, поэтому просто удалите свободный плагин и посмотрите, работает ли он. Andres Ilich
хммм все еще не работает. я удалил бутстрап-выпадающий. все, что мне нужно сделать, это перезапустить сервер rails право вступить в силу? Sasha

Ваш Ответ

13   ответов
1

//require bootstrap-sprockets внутри вашего application.js. Я прокомментировал это, и это сработало для меня.

2

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

1

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

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

rake assets:clean

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededrake assets:clean:all
108

пришлось двигаться

//= require jquery

ниже

//= require bootstrap

в

application.js
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededrake assets:clean
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
12

Во-первых, позвольте мне рассказать вам о моих настройках: я следовал инструкциям на сайте начальной загрузки и загрузил bootstrap-dropdown.js. Я положил его в активы / javascripts. Мой файл application.js выглядит так:

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .

Выпадающие списки не работали.

В исходном коде я заметил, что тег скрипта для 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 . и вместо этого удалил файл assets / bootstrap-dropdown.js, и снова все заработало!

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

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

3

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

0

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

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

3

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

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

0

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

Устанавливая правильный порядок и удаляя все в папке public / assets, он работал в разработке.

0

Rails 3.1 Assets - странное служение в разработке

есть ошибка, когда сжатая версия включается в режиме отладки в application.js

0

//= 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 %> должен быть внутри & Quot;_header.html.erb& Quot; и удалите из & quot;application.html.erb& Quot; ,

Похожие вопросы