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

Переключение бутстрапа "раскрывающийся список" не работает должным образом в разработке, но работает в производстве

Я следую RailsTutorial sample_app, и внутри мы используем структуру twitter-boostrap. Существует раскрывающееся меню (код, jQuery), который не работает для меня должным образом в разработке env, но хорошо работает в производстве (на Heroku).

С помощью "Visual Event" я подтвердил, что есть событие, связанное с названием меню. Нормальное поведение должно быть нажато, чтобы изменить класс:

<li id="fat-menu" class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">

в

<li id="fat-menu" class="dropdown open">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">

Тем не менее, в моем случае, при нажатии он добавляет "open" и удаляет в тот же момент. Я едва мог заметить, что он вносит изменения, но быстро возвращается в исходное состояние, и поэтому раскрывающееся меню не открывается.

Если я вручную отредактирую код в браузере и добавлю "open" в класс, откроется меню. Если я затем нажимаю на заголовок меню, он мгновенно удаляет "открыть", а затем снова возвращает его (прямо напротив первого случая).

Я очень озадачен тем, что он работает в производстве, но не в разработке (в том же браузере). Что я должен проверить?

Спасибо!

Василь//с первым вопросом

4b9b3361

Ответ 1

Вы получите это поведение, если дважды загрузите код для bootstrap-dropdown.js. Убедитесь, что вы не загружаете как bootstrap-dropdown.js И bootstrap.js. Последний включает первый.


JSFiddle FAIL

Если вы удалите bootstrap-dropdown.js с панели ресурсов и перезапустите его, он будет работать.

Ответ 2

(Rails 3.2) Я решил эту проблему, удалив локально прекомпилированные активы - он отлично работал бы в Heroku/Prod, но мгновенно откроется и закроется в dev.

rake assets:clean

Ответ 3

У меня была такая же проблема, и оказалось, что загрузочные бутстрапы загружаются дважды. +1 для этого исправления!

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

Ответ 4

обновление от bootstrap -v от 2.1 до 2.3 решило проблему для меня.

Ответ 5

У меня возникла почти такая же проблема. Но вызывает загрузку bootstrap и bootstrap.min js файлов одновременно на одной HTML-странице в виде пакета (проект ASP.NET MVC). Удаление одного из них было решено.

Ответ 6

У меня была такая же проблема. Но все это произошло, когда я пропустил какой-то конечный элемент HTML.

Ответ 7

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

Всегда помните, чтобы очистить свои скомпилированные активы при переходе к разработке с производства.

Ответ 8

Ни один из этих решений не работал у меня. Этот режим вызывал этот режим. То, что я обнаружил через тонну проб и ошибок, состояло в том, что config.assets.debug = false заставляло меня не видеть проблему с настройкой файла gem. Когда я установил его в true, ошибка, которую я указала, указывала на то, что мой "самонастроенный" камень был внутри моей группы активов, когда это не должно было быть.

Итак, для тех, кто попал в эту проблему и довел до конца этот комментарий, попробуйте установить config.assets.debug = true в своей производственной среде, чтобы убедиться, что он по крайней мере заставит вас указывать в правильном направлении.