Rails, javascript not loading after clicking through link_to helper

前端 未结 7 1092
一整个雨季
一整个雨季 2020-11-28 19:11

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

7条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-28 19:45

    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); 
    

提交回复
热议问题