切换页面后,Bootstrap下拉列表停止工作–Rails 4.2

我在我的网站上实现了引导菜单。 问题是,如果我切换页面菜单变得没有响应,请接受“徽标部分”,它将我带回主页。 如果我刷新页面,下拉菜单会再次运行。 我不知道为什么。

我的application.js看起来像:

 //= require jquery //= require jquery_ujs //= require turbolinks //= require bootstrap //= require moment //= require react //= require react_ujs //= require writer/react/panel 

我的Gemfile

 source 'https://rubygems.org' gem 'rails', '4.2.0' gem 'pg' gem 'turbolinks' gem 'jbuilder', '~> 1.2' gem 'therubyracer' gem 'figaro' gem 'responders', '~> 2.0' gem 'active_model_serializers', github: 'rails-api/active_model_serializers', branch: '0-8-stable' gem 'xaaron', '0.6.11', :git => 'git@github.com:AdamKyle/Xaaron.git', :tag => '0.6.11' # Debug gem 'pry', require: 'pry' gem 'pry-rails' # Assets & Asset Management gem "bower-rails", "~> 0.7.2" gem 'uglifier', '>= 1.3.0' gem "font-awesome-rails" gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'jquery-ui-rails' gem 'sass-rails', '~> 4.0.0' gem 'backbone-on-rails' gem 'react-rails', '~> 1.0.0.pre', github: 'reactjs/react-rails' # Test and Development gem 'rspec-rails', '3.2.1', group: [:test, :development] # Development Only group :development do gem 'capistrano', '~> 2.15' gem 'rvm-capistrano', '~> 1.4' gem 'letter_opener' gem 'recursive-open-struct' end # Test Only group :test do gem 'database_cleaner' gem 'guard-rspec' gem 'factory_girl_rails' gem 'capybara' gem 'capybara-screenshot' gem 'capybara-email' gem 'simplecov', '0.8.2' gem 'json_spec', '1.1.2' gem 'vcr' gem 'webmock' end 

我的导航元素:

  

我90%确定我已经包含了所有需要包含的内容。 当我切换页面,刷新页面或切换页面后,控制台不会抛出任何错误 – 尝试单击导航元素。

我错过了什么吗?

更新1

我通过div检查器运行上面的html,没有可以检测到的未关闭的标签。

是的,你错过了什么。 这是turbolinks 。 我可以看到你拥有它,但让我解释一下。 使用turbolinks,每次单击网站上的公共链接时,浏览器都不会进行完整的页面刷新,它只是发送一个AJAX请求并获取标题和正文。 因此没有page:ready jQuery通常被挂钩的page:ready事件,因此jQuery不会获取新到达的DOM结构。

所以,这里有一些选项。

  1. 摆脱turbolinks。 从你的js文件中删除它们你就没事了。 你会有那些整页重新加载,这可能会减慢你的负荷。

  2. 将属性data-turbolinks-track='false'到布局中的javascript_tag调用中。 这将使浏览器在每次调用时获取js文件。

  3. 将您的javascript_tag调用移动到布局body的底部。 数字2只是一样的东西。

  4. 使用像jquery-turbolinks这样的gem来连接jQuery所需的回调并让它获取新的DOM。