引导程序“下拉打开”切换在开发中无法正常工作,但在生产中有效

时间:2012-08-05 01:36:41

标签: jquery drop-down-menu twitter-bootstrap ruby-on-rails-3.2

我关注RailsTutorial sample_app,我们使用twitter-boostrap框架。有一个下拉菜单(the code, jQuery)在开发环境中无法正常使用,但在生产中运行良好(在Heroku上)。

在“视觉事件”的帮助下,我确认有一个与菜单标题相关的事件。正常行为应该是单击以更改类:

<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">

尽管如此,在我的情况下,点击它会添加“打开”并在同一时刻删除。我几乎没有注意到它会进行更改,但会很快返回到初始状态,因此下拉菜单无法打开。

如果我在浏览器中手动编辑代码并在课程中添加“打开”,则会打开菜单。如果我然后单击菜单标题,它会暂时“打开”,然后再次返回(与第一个案例相反)。

我很困惑它在生产中有效,但在开发中却没有(在同一浏览器上)。我该怎么检查?

谢谢!

Vasil //第一个问题

8 个答案:

答案 0 :(得分:35)

如果要加载 bootstrap-dropdown.js 的代码两次,就会出现这种情况。检查以确保您没有同时加载 bootstrap-dropdown.js bootstrap.js 。后者包括前者。


JSFiddle FAIL

如果您从资源面板中删除 bootstrap-dropdown.js ,并重新运行它,它将会有效。

答案 1 :(得分:3)

(Rails 3.2)我通过删除本地预编译资产解决了这个问题 - 它可以在Heroku / Prod中正常工作,但会在开发中立即打开和关闭。

rake assets:clean

答案 2 :(得分:2)

我遇到了同样的问题,结果发现bootstrap dropdown被加载了两次。 +1修复此问题!

我们全局加载bootstrap-dropdown.js,因为我们在每个页面上都使用它。我们的一个开发人员将bootstrap.js作为依赖项加载到一个小部件中。结果是除了一个页面之外,我们的每个页面的下降都有效。追踪有点困难,如果不知道最近页面上发生了什么变化,那就更难以弄明白了。

答案 3 :(得分:2)

从bootstrap -v 2.1更新到2.3解决了我的问题。

答案 4 :(得分:2)

我遇到了几乎相同的问题。但是导致在一个HTML页面中同时加载bootstrap和bootstrap.min js文件作为bundle(ASP.NET MVC项目)。删除其中一个就解决了。

答案 5 :(得分:0)

我遇到了同样的问题。但所有这一切都是因为我错过了一些结束HTML元素。

答案 6 :(得分:0)

我遇到了同样的问题。我了解到预编译资产用于开发和生产。我在生产环境中测试缓存,当我切换回开发时,下拉菜单停止工作。

在切换回生产开发时,请务必清理已编译的资产。

答案 7 :(得分:0)

这些解决方案都不适合我。生产模式导致此问题。我通过大量的反复试验发现,config.assets.debug = false导致我没有看到我的gem文件设置有问题。当我把它设置为true时,我得到的错误指出了我的&#39; bootstrap-sass&#39;宝石在我的资产组内部,不应该是。

所以对于那些遇到过这个问题的人并且已经完成了这个评论,请尝试在生产环境中设置config.assets.debug = true,看看它是否至少会让你指向正确的方向