Las funciones de Javascript funcionan en localhost pero no cuando se implementan en Heroku
twitter-bootstrap popover (8)
La actualización de los piñones funcionó para mí: los bundle update sprockets
He notado que cuando implemento en Heroku, las funciones de javascript no funcionan (como Bootstrap Popover, Buttons, etc.). Estoy trabajando con rieles 3.2.2, rubí 1.9.3. Las características funcionan en localhost. Parece que no se muestran errores cuando se implementa en Heroku (las funciones simplemente no aparecen).
¿Algunas ideas? ¡Gracias!
La precompilación manual funcionó para mí.
bundle exec rake assets:precompile
antes de empujar a Heroku.
Recuerde que todo lo que normalmente haría en localhost, debe estar haciendo con heroku. Asegúrate de que heroku run rake assets:precompile
.
Revisé el js minificado para mi aplicación, y el popover estaba dos veces en el archivo.
Asegúrese de que solo uno de los bootstrap
y boostrap-sprockets
esté declarado en sus activos javascript
De la documentación:
bootstrap-sprockets y bootstrap no deberían incluirse ambos en application.js.
bootstrap-sprockets proporciona archivos JavaScript de Bootstrap individuales (alert.js o dropdown.js, por ejemplo), mientras que bootstrap proporciona un archivo concatenado que contiene todos los Javascripts de Bootstrap.
Asegúrese de que solo uno de los piñones de arranque y de arranque
Refs: bootstrap-sass problema github y here .
Revise su archivo production.rb. Creo que la línea debe ser:
config.assets.compile = true
Creo que esto se establece en falso por defecto.
Si ya ha intentado heroku run rake assets:precompile
y JS aún no funciona, intente heroku restart
para reiniciar el servidor después de precompilar los activos.
También tuve un problema similar, pero el problema estaba ocurriendo en localhost también.
Probablemente estés usando rails-bootstrap gem. Instala un archivo bootstrap.coffee.js Este archivo fue el culpable. Tenía uso .popover y el complemento relevante no fue incluido. Comenté eso, ya que no lo estaba usando de todos modos, pero debería considerar incluir el complemento popover para bootstrap.
Tuve exactamente el mismo problema (soy muy nuevo en Rails). Eventualmente resolví el problema al reorganizar el orden de los archivos dentro de application.js:
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
Para que los javascripts funcionen en el desarrollo, "require jquery" debía estar después de "require twitter / bootstrap". En producción, jquery necesitaba ser lo primero. No estoy seguro de qué causó esto, pero ahora funciona cuando se implementa en Heroku.
Utilicé estos dos mensajes:
javascript: complementos de jquery de inicio de Twitter no compilados para la producción