Bootstrap Dropdown deja de funcionar después de que cambio de página – Rails 4.2

Tengo el menú de arranque implementado en mi sitio. El problema es que si cambio de página el menú deja de responder, acepte la “sección del logotipo” que me lleva de vuelta a la página de inicio. Si actualizo la página, el menú desplegable volverá a funcionar. No estoy seguro por qué.

Mi application.js parece a:

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

Mi 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 

Mi elemento de navegación:

  

Estoy seguro al 90% de que tengo todo lo que debo incluir. la consola no produce errores cuando cambio de página, actualizo una página o, después de cambiar de página, pruebe y haga clic en un elemento de navegación.

¿Me estoy perdiendo de algo?

Actualización 1

Corrí el código html anterior a través de un verificador de div, sin tags abiertas que pudiera detectar.

Sí, te estás olvidando de algo. Es turbolinks . Puedo ver que lo tienes, pero déjame explicarte. Con turbolinks, cada vez que hace clic en un enlace común en su sitio web, el navegador no realiza una actualización completa de la página, simplemente envía una solicitud AJAX y obtiene el título y el cuerpo. Por lo tanto, no hay ningún evento page:ready que jQuery comúnmente esté conectado, por lo que jQuery no recupera la estructura DOM recién llegada.

Así que, aquí hay algunas opciones que tiene aquí.

  1. Deshazte de los turbolinks. Bórralos de tu archivo js y estarás bien. Tendrá esas recargas de página completa que probablemente ralentizarán su carga un poco.

  2. Agregue un atributo data-turbolinks-track='false' a su llamada javascript_tag en su diseño. Eso hará que el navegador obtenga el archivo js en cada llamada.

  3. Mueve tu llamada javascript_tag a la parte inferior del body de los diseños. Simplemente hace lo mismo que el número 2.

  4. Use una gem como jquery-turbolinks para conectar las devoluciones de llamada requeridas con jQuery y obtener el nuevo DOM.