叽叽喳喳bootstrap下拉突然不工作
我想知道如果有人能帮助我。 我的引导下拉菜单突然停止工作。 我不知道为什么。 它之前工作。 我没有触及我的意见我的布局意见,所以我认为这个问题是不存在的。 即时通讯很确定它必须做我的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 .
即时猜测也许它必须做我的configuration文件不知何故?
不得不移动
//= require jquery
下面
//= require bootstrap
中
application.js
如果预编译资产不起作用,请尝试删除预编译资产
rake assets:clean
我发现下拉js被加载到资产pipe道两次似乎打开和立即closures下拉菜单,但在Heroku /生产将正常工作。
我有同样的问题,我find了2种方法来解决它。
首先,让我告诉你我的设置:我遵循bootstrap站点上的说明,并下载了bootstrap-dropdown.js。 我把它放在assets / 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,并再次工作!
我不明白这一点,但重新sorting// =需要jquery和/ /需要引导似乎解决了这个问题两次对我来说。 首先在jquery上方移动bootstrap,正如Sashabuild议修复它。 然后我做了更多的工作,准备在rails 3.2.3上使用jruby进行部署。 预编译资产,warble和dropdowns在开发和生产中都不再使用。 在tmp中删除公共/资产,以及一些.class文件和文件。 没有效果。 最后,我将application.js中的顺序移回到最后一个失败事件(即引导之前的jquery)和下拉菜单再次运行之前的顺序。
可以改变application.js触发重build一些caching,或一些幕后的过程是问题的根源? 下次发生这种情况时,我会尝试对application.js进行微小的更改,看看是否有任何问题。
我在我的开发机器上遇到过这种情况,但是我的生产服务器工作正常。我注意到,虽然重新sorting了js在application.js中需要修复开发中的问题(下拉工作再次),请小心,因为这会导致生产中的下拉菜单无效。 我必须回去把他们放回原来的生产状态。 现在我只是在需要的时候临时改变它们。
预编译资产再次解决了我的问题
我也有这个问题…这是关系到轨道turbolinks。 在初始页面加载下拉式将无法正常工作,但刷新后,他们会。 而且,这是因为在turbo链接中,一些Dom元素可能不会每次都被加载/重载。 所以,我的下拉停下来一直工作(等等)。 铁轨4修复这个是添加jquery.turbolinks gem https://github.com/kossnocorp/jquery.turbolinks 。 我发现这个gem的一件事(后来在一些博客中遇到)是javascript标签必须在头部。 自述文件没有提到这个…但是
我find了一个替代品! 所有这些解决scheme都不适合我。 而不是点击触发下拉,而是让它hover触发。 放在页面底部的脚本标签。 代码来自: 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资产 – 在开发中的奇怪服务
在application.js中有一个压缩版本被包含在debugging模式中的错误
预编译资产不起作用。 把下拉之前,jquery工作在开发,但不是在生产中删除下拉菜单仍在开发中:-O
把正确的顺序,并删除公共/资产文件夹中的一切使其在开发工作。
最近closures了#5145号票。 修复已经恢复,但最终提供了一个特定于应用程序的解决scheme,并为我工作。 一定要清除您的浏览器caching。
移动//= require jquery
下面的//= require jquery
//= require bootstrap
并将gem 'bootstrap-sass'
升级到2.3.0.1 ,解决了我的问题。
我想补充说,我上面提到的解决scheme只适用于本地主机,但不适用于Heroku。 在我的情况下,解决scheme是:
//= 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 ”中删除。
我有这个错误,事实certificate我的CSS阻止下拉工作。
具体来说,我有'溢出:隐藏的' 在我的标题导航CSS。 删除,解决了这个问题。