¿Estás usando Rails 4? (Descúbrelo haciendo rails -v
en tu consola)
Este problema probablemente se deba a la nueva gema Turbolinks . Hace que su aplicación se comporte como una aplicación JavaScript de una sola página. Tiene algunos beneficios ( es más rápido ), pero desafortunadamente rompe algunos eventos existentes como $(document).ready()
porque la página nunca se vuelve a cargar. Eso explicaría por qué JavaScript funciona cuando carga directamente la URL, pero no cuando navega a través de un link_to
.
Aquí hay un RailsCast sobre Turbolinks.
Hay un par de soluciones. Puede usar jquery.turbolinks como una solución inmediata , o puede cambiar su $(document).ready()
declaración para usar en su lugar el 'page:change'
evento Turbolinks :
$(document).on('page:change', function() {
});
Alternativamente, puede hacer algo como esto para la compatibilidad con cargas de páginas regulares, así como con Turbolinks:
var ready = function() {
};
$(document).ready(ready);
$(document).on('page:change', ready);
Si está usando Ruby on Rails> 5 (puede verificar ejecutando rails -v
en la consola) use en 'turbolinks:load'
lugar de'page:change'
$(document).on('turbolinks:load', ready);