Ruby 在 Rails 5 - Turbolink 3 无法正常工作

Ruby on Rails 5 - Turbolink 3 did not work correctly

我在 Rails 5 上使用 Ruby 并使用 turbo-link,如下所示:

<%= javascript_include_tag 'custom-plugins', 'data-turbolinks-track' => true %>

在 Rails 4 上与 Ruby 一起工作正常,但在 Rails 版本 5 上与 Ruby 有问题。一旦我点击返回 js/css 没有正确加载。

如有任何帮助,我们将不胜感激。

在带有js的turbolinks中很常见。 Turbolinks 有助于更快地加载特定页面。但它也做的是有时会阻止 js 运行。因此,在加载此特定页面时使用此行

<%= link_to "example_page", example_page_path, :"data-no-turbolink" => true %> 

或 在你的布局中写这个

<body <%= "data-no-turbolinks='true'".html_safe if controller_name=="example_controller" && action_name=="example_page" %>>

阻止 turbolink 在此特定页面上工作。

参考 Rails 5 Awesome features

Turbolinks 从第 4 版开始就是 Rails 的一部分,这可能是人们讨厌或喜欢的功能之一;这里没有中间立场。

在 Rails 5 中,我们将收到一个新版本,在 HTML5 自定义数据属性的帮助下,我们将期望在 Rails 应用程序中获得更好的速度和渲染。

这个新版本中最重要的变化是部分替换功能。从客户端,我们将能够告诉 Turbolinks 我们需要什么内容 change/replace 什么不需要。

Turbolinks 将查找 HTML5 自定义属性并在我们的 .

中决定替换策略

要在客户端触发替换,我们可以使用或更新我们的 .和之间的区别在于,第一个将向服务器发出 a 以获取必须用于替换我们的 HTML,而期望我们提供应该用于其操作的 HTML。

通过这两个函数,我们可以将包含 HTML 个元素的数组的哈希值传递给 or。

Action  Result
Turbolinks.visit(url, { change: ['entries'] })  Will replace any element with custom attribute and any element with its id listed in change.
Turbolinks.visit(url)   Will keep only elements with custom attribute and replace everything.
Turbolinks.visit(url, { keep: ['flash'] })  Will keep only elements with custom attribute and any element with its id listed in keep, everything else will be replaced.
Turbolinks.visit(url, { flush: true })  Will replace everything

我们可以使用 and 从服务器端触发相同的功能,两者都可以接收 , 和 作为选项,但也可以接收 or 以强制使用或不使用 Turbolinks 进行重定向。

无论您是否喜欢 Turbolinks,现在都是尝试并确定它是否适合您的应用程序的好时机。