Verwenden Sie Rails 4? (Finden Sie es heraus, indem Sie es rails -vin Ihrer Konsole tun )
Dieses Problem ist wahrscheinlich auf das neu hinzugefügte Juwel Turbolinks zurückzuführen . Dadurch verhält sich Ihre Anwendung wie eine einseitige JavaScript-Anwendung. Es hat ein paar Vorteile ( es ist schneller ), aber es bricht leider einige bestehende Ereignisse, wie zum Beispiel, $(document).ready()weil die Seite nie neu geladen wird. Das würde erklären, warum JavaScript funktioniert, wenn Sie die URL direkt laden, aber nicht, wenn Sie durch a zu ihr navigieren link_to.
Hier ist ein RailsCast über Turbolinks.
Es gibt ein paar Lösungen. Sie können jquery.turbolinks als Drop-In-Fix verwenden oder Ihre $(document).ready()Anweisung so ändern , dass stattdessen das Turbolinks- 'page:change'Ereignis verwendet wird:
$(document).on('page:change', function() {
});
Alternativ können Sie aus Gründen der Kompatibilität mit regulären Seitenladevorgängen sowie Turbolinks Folgendes tun:
var ready = function() {
};
$(document).ready(ready);
$(document).on('page:change', ready);
Wenn Sie Ruby on Rails> 5 verwenden (Sie können dies überprüfen, indem Sie es rails -vin der Konsole ausführen), verwenden Sie 'turbolinks:load'stattdessen anstelle von'page:change'
$(document).on('turbolinks:load', ready);