18

我正在关注RailsTutorial sample_app,在里面我们使用 twitter-boostrap 框架。有一个下拉菜单(代码,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 //第一个问题

4

8 回答 8

36

如果您两次加载bootstrap-dropdown.js的代码,您将得到此行为。检查以确保您没有同时加载bootstrap-dropdown.jsbootstrap.js。后者包括前者。


JSFiddle 失败

如果您从资源面板中删除bootstrap-dropdown.js,然后重新运行它,它将起作用。

于 2012-08-05T23:01:52.410 回答
4

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

rake assets:clean

于 2012-09-05T14:41:08.883 回答
2

我遇到了同样的问题,结果发现引导下拉菜单被加载了两次。对此修复+1!

我们全局加载 bootstrap-dropdown.js,因为我们在每个页面上都使用它。我们的一位开发人员将 bootstrap.js 作为依赖项加载到小部件中。结果是我们的下拉菜单在除一页之外的每一页都有效。追查起来有点困难,如果不知道最近页面上发生了什么变化,要弄清楚就困难得多。

于 2013-04-22T17:23:17.907 回答
2

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

于 2013-05-31T13:19:40.517 回答
2

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

于 2015-09-15T07:46:03.750 回答
0

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

从生产切换回开发时,请始终记住清理已编译的资产。

于 2012-10-14T22:56:38.523 回答
0

我遇到了同样的问题。但发生的只是我错过了一些结束的 HTML 元素。

于 2012-08-06T03:48:20.817 回答
0

这些解决方案都不适合我。生产模式导致了这个问题。我通过大量试验和错误发现 config.assets.debug = false 导致我看不到我的 gem 文件设置的问题。当我将其设置为 true 时,我收到的错误指出我的“bootstrap-sass”gem 不应该在我的资产组中。

因此,对于那些遇到此问题并一直到此评论的人,请尝试在您的生产环境中设置 config.assets.debug = true ,看看它是否至少能让您指向正确的方向。

于 2014-11-23T20:22:40.663 回答