Rails, javascript not loading after clicking through link_to helper

前端 未结 7 1057
一整个雨季
一整个雨季 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:43

    Make sure you don't have any inline <script> tags. (Inline script tags are bad with turbolinks).

    0 讨论(0)
  • 2020-11-28 19:44

    If you are on rails 5 instead of 'page:change' you should use 'turbolinks:load' like this:

    $(document).on('turbolinks:load', function() {
      // Should be called at each visit
    })
    

    Source: https://stackoverflow.com/a/36110790

    0 讨论(0)
  • 2020-11-28 19:44

    The solution that solved my issue was adding this meta property.

    <meta name="turbolinks-visit-control" content="reload">
    

    This ensures visits to a certain page will always trigger a full reload.

    This was incredibly useful for working on a solution to solve the issue I was having with this, https://github.com/turbolinks/turbolinks#reloading-when-assets-change .

    0 讨论(0)
  • 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); 
    
    0 讨论(0)
  • 2020-11-28 19:50

    I got the same probleme but jquery.turbolinks doesn't helped. I noticed that I have to override the GET method.

    There is my sample :

    <%= link_to 'Edit', edit_interpreter_path(@interpreter), method: :get %>
    
    0 讨论(0)
  • 2020-11-28 19:57

    You can also wrap your link with a div that specifies data-no-turbolink.

    Example:

    <div id="some-div" data-no-turbolink>
        <a href="/">Home (without Turbolinks)</a>
    </div>
    

    Source: https://github.com/rails/turbolinks

    0 讨论(0)
提交回复
热议问题