导航栏折叠在 Rails 5/Bootstrap 3 上不起作用
Posted
技术标签:
【中文标题】导航栏折叠在 Rails 5/Bootstrap 3 上不起作用【英文标题】:Navbar Collapse not working on Rails 5/Bootstrap 3 【发布时间】:2018-07-07 16:40:20 【问题描述】:当导航栏菜单变为下拉菜单时,访问菜单的按钮无响应。
我试过了:
重新排序代码 做一个 rake assets:clean 尝试使用 JS仍然无法弄清楚如何解决它。 这是我的代码:
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="main-nav-collapse" aria-expanded="false">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<%= link_to root_path, class: 'navbar-brand' do %>
<img src="https://i.imgur.com/TtTQgbx.png" class="minilogo">
<% end %>
</div>
<div class="collapse navbar-collapse" id="main-nav-collapse">
<ul class="nav navbar-nav navbar-right">
<li><%= link_to 'Book Club', '/bookclub' %></li>
<li><%= link_to 'Musings', '/musings' %></li>
<li><%= link_to 'Podcasts', '/podcasts' %></li>
<li><%= link_to 'Resources', '/resources' %></li>
<li><%= link_to 'Courses', '/courses' %></li>
<li><%= link_to 'About', about_path %></li>
</ul>
</div>
</div>
</nav>
application.js
//= require bootstrap-sprockets
//= require jquery
//= require rails-ujs
//= require turbolinks
//= require_tree .
//=
宝石文件
gem 'jquery-rails', '4.3.1'
gem 'bootstrap-sass', '~> 3.3', '>= 3.3.7'
【问题讨论】:
您能否更具体地说明一下到底是什么不起作用? 我刚刚更新了它 我相信 jQuery 必须在 bootstrap-sprockets 之前加载 【参考方案1】:试试下面的
如果您使用的是 Rails 5.1+,那么您还需要在此处添加 jquery,如下所示:
application.js
更新如下
//= require rails-ujs
//= require jquery
//= require bootstrap-sprockets
//= require turbolinks
//= require_tree .
希望对你有帮助
【讨论】:
【参考方案2】:将这些复制并粘贴到页面底部似乎可行,尽管我认为 rails 方法是安装 jquery gem 并将其包含在 application.js 中。
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
【讨论】:
【参考方案3】:将此添加到 application.html
<!-- jQuery first, then Tether, then Bootstrap JS. -->
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
【讨论】:
以上是关于导航栏折叠在 Rails 5/Bootstrap 3 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章