use*_*441 11 ruby-on-rails twitter-bootstrap
在我的Rails应用程序中,我有一个下拉菜单的以下代码:
<header class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<nav>
<ul class="nav pull-right">
<li><%= link_to "Home", root_path %></li>
<% if signed_in? %>
<li id="fat-menu" class="dropdown">
<a href="#" class="dropdown-toggle" data toggle="dropdown">
Account <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><%= link_to "Settings", edit_user_path(current_user) %></li>
<li class="divider"></li>
<li>
<%= link_to "Sign out", signout_path, method: "delete" %>
</li>
</ul>
</li>
<% else %>
<li><%= link_to "Sign in", signin_path %>
<% end %>
</ul>
</nav>
</div>
</div>
</header>
Run Code Online (Sandbox Code Playgroud)
在我的application.js文件中,我有以下代码:
//= require bootstrap
Run Code Online (Sandbox Code Playgroud)
我不知道为什么下拉菜单不起作用,我不知道如何解决它.几天前,它工作正常,现在它不再正常运行.谢谢你的帮助!
小智 8
我测试了你的HTML代码,它工作得很好.
首先,确保首先加载jQuery:
//= require jquery
//= require bootstrap
Run Code Online (Sandbox Code Playgroud)
此外,您必须通过javascript调用下拉列表:
$('.dropdown-toggle').dropdown()
Run Code Online (Sandbox Code Playgroud)
解决方案在于您导入 javascript 依赖项的顺序。
这是我最初在我的 application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require bootstrap-sprockets
//= require turbolinks
//= require_tree
Run Code Online (Sandbox Code Playgroud)
当我删除时,bootstrap-sprockets
我的下拉列表起作用了。但是,我不想删除bootstrap-sprockets
. 所以我的新订单看起来像这样;
//= require bootstrap-sprockets
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
然后,为了安全起见,我必须通过运行以下命令来清理和预编译资产;
rake assets:clean
bundle exec rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
这对我有用。