如何使用 Rails' Turbolinks 和 Wistia's Fresh Url 修复第一页

How to fix first page with Rails' Turbolinks and Wistia's Fresh Url

使用 Wistia 的 Fresh Url plugin 时,Turbolinks 在第一页上不起作用。例如,如果您离开一个页面并单击浏览器中的后退按钮,url 会发生变化,但页面实际上根本不会发生变化。但是,一旦您离开两个页面,Turbolinks 就会再次开始工作。

FreshUrl使用window.history.replaceState()更新url完成后,需要设置turbolinks: true

因此,您必须将其添加到 Fresh Url 的 FreshUrl.prototype.allReadyCallback() 中,才能成为...

FreshUrl.prototype.allReadyCallback = function() {
    return window.history.replaceState({ turbolinks: true }, "", FreshUrl.cleanUrl());
};

Turbolinks 目前不能很好地与 Jquery 和异步 javascript 配合使用,但针对 Rails 5 的更改看起来很有希望。

目前我只建议在单击指向使用该插件的页面的 link 时禁用 turbolinks。您可以通过向 link_to 辅助方法添加 data-no-turbolink 属性 来实现,如下所示:

<%= link_to some_path, 'data-no-turbolink' => false do %>
  click_me_to_go_to_some_path
<% end %>