导航栏折叠在 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 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 导航栏切换器仅在第一次单击时起作用

Bootstrap 4:在导航栏折叠时显示活动导航项

在导航栏折叠时隐藏的导航栏中显示图像

bootstrap 3折叠导航栏问题,导航栏标题溢出

在 Bootstrap 3 中单击导航栏元素外部时如何关闭打开的折叠导航栏?

JavaScript - Bootstrap 4 - 仅在折叠时隐藏导航栏