Rails, javascript not loading after clicking through link_to helper

javascript, jquery, ruby-on-rails

Solution

Are you using Rails 4? (Find out by doing `rails -v` in your console)

This issue is probably due to the newly added Turbolinks gem. It makes your application behave like a single page JavaScript application. It has a few benefits (it's faster), but it unfortunately breaks some existing events like `$(document).ready()` because the page is never reloaded. That would explain why the JavaScript works when you directly load the URL, but not when you navigate to it through a `link_to`.

Here's a RailsCast about Turbolinks.

There are a couple solutions. You can use jquery.turbolinks as a drop-in fix, or you can switch your `$(document).ready()` statement to instead use the Turbolinks `'page:change'` event:

$(document).on('page:change', function() {
    // your stuff here
});

Alternatively, you could do something like this for compatibility with regular page loads as well as Turbolinks:

var ready = function() {
    // do stuff here.
};

$(document).ready(ready);
$(document).on('page:change', ready);

If you are using Ruby on Rails >5 (you can check by running `rails -v` in the console) use `'turbolinks:load'` instead of `'page:change'`

$(document).on('turbolinks:load', ready); 

Problem

I'm having some trouble loading my javascript when I use a link_to helper in rails. When I either manually enter the url with 'localhost:3000/products/new' or reload the page, the javascript loads, but when I go through a link as written below, the jQuery `$(document).ready` will not load on the new page. Link_to, javascript does not load when I click this link: ``` <%= link_to "New Product", new_product_path %> ``` products.js file ``` $(document).ready(function() { alert("test"); }); ``` Any help would be much appreciated. Thanks in advance!

Original source

Related problems