我想知道是否有人可以帮助我。我的引导下拉菜单突然停止工作。我不知道为什么。它以前工作。我没有触摸我的观点我的布局视图所以我认为问题不存在。我很确定它与我的javascript有关,但我不知道它来自哪里。
我的宝石文件是......
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 .
猜测也许它与我的配置文件有某种关系?
答案 0 :(得分:108)
不得不搬家
//= require jquery
下面
//= require bootstrap
中的
application.js
答案 1 :(得分:21)
如果预编译资产不起作用,请尝试删除预编译资产
rake assets:clean
我发现下拉js被加载到资产管道两次似乎立即打开和关闭下拉菜单,但在Heroku / Production中可以正常工作。
答案 2 :(得分:12)
我遇到了同样的问题,我找到了两种解决方法。
首先,让我告诉你我的设置:我按照bootstrap网站上的说明操作,然后下载了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">
所以我从application.js中删除了行//= require_tree .
,重新启动了服务器,下拉列表工作正常!
然后我放回了行//= require_tree .
,取而代之的是删除文件assets / bootstrap-dropdown.js,然后再次工作了!
答案 3 :(得分:3)
我不明白这一点,但重新排序// =需要jquery和// = require bootstrap似乎已经为我解决了两次问题。首先在jquery上面移动bootstrap,因为Sasha建议修复它。然后我做了更多的工作并准备使用jruby on rails 3.2.3进行部署。预编译资产,warble和下拉菜单在开发和生产中都不起作用。删除公共/资产,以及tmp中的一些.class文件和文件。没有效果。最后,我将application.js中的顺序移回到最后一次失败事件之前的状态,即在引导程序之前的jquery,并再次显示下拉列表。
对application.js的更改是否会触发某些缓存的重建,或者是幕后问题的某些过程?下次发生这种情况时,我会尝试对application.js进行一些微不足道的更改,看看是否有任何效果。
答案 4 :(得分:3)
我在我的开发机器上遇到过这个问题,但是我的生产服务器运行正常..我注意到在重新排序js需要在application.js中修复开发中的问题(下拉菜单再次工作),小心因为这会导致我的下拉列表在生产中。我不得不回去把它们放回去让生产再次工作的方式。现在我只是在我需要的时候暂时改变它们。
答案 5 :(得分:2)
再次预编译资产为我解决了问题
答案 6 :(得分:2)
我也有这个问题......而且它与rails turbolinks有关。在初始页面加载时,下拉列表将不起作用,但在刷新之后它们将会起作用。并且,这是因为使用turbo链接时,一些Dom元素可能不会每次都被加载/重新加载。所以,我的下降停止了持续工作(除其他外)。导轨4修复此问题是添加jquery.turbolinks gem https://github.com/kossnocorp/jquery.turbolinks。我找到的这个宝石的一件事(后来在一些博客中出现)是javascript标签必须在头脑中。自述文件没有提到这个......但是
答案 7 :(得分: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})
答案 8 :(得分:1)
还要确保您的application.js中没有//require bootstrap-sprockets
。我评论说它对我有用。
答案 9 :(得分:0)
请参阅Rails 3.1 Assets - Strange Serving in Development
有一个错误,压缩版本包含在application.js
的调试模式中答案 10 :(得分:0)
预编译资产不起作用。 在jquery开发之前进行下拉,但不是在生产中 删除下拉列表仍然在开发中:-O
正确的顺序并删除公共/资产文件夹中的所有内容使其在开发中工作。
答案 11 :(得分:0)
票据#5145最近因此而关闭。该修复程序已恢复,但最终提供了一个特定于应用程序的解决方案,并且对我有用。请务必清除浏览器缓存。
答案 12 :(得分: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 %>
需要在里面
“ _header.html.erb ”并从“ application.html.erb ”中删除。
答案 13 :(得分:0)
我遇到了这个错误,结果发现我的CSS阻止了下拉工作。
特别是我'溢出:隐藏;'在我的标题导航CSS中。删除它解决了这个问题。