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

时间:2015-08-21 06:03:52

标签: ruby-on-rails ruby turbolinks ruby-on-rails-5

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

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

Ruby On Rails 4工作正常,但Ruby on Rails版本5有问题。一旦我点击后面,js / css没有正确加载。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

参见Rails 5 Awesome features

Turbolinks自4版以来一直是Rails的一部分,可能是人们讨厌或喜爱的功能之一;这里没有中间地带。

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

此新版本中最重要的更改是部分替换功能。从客户端,我们将能够告诉Turbolinks我们需要更改/替换哪些内容以及我们不需要哪些内容。

Turbolinks将寻找HTML5自定义属性,并在我们的

中决定替换策略

要在客户端触发替换,我们可以使用或更新我们的。和之间的区别在于,第一个将发送给服务器以获取必须用于替换我们的HTML,同时期望从我们这里获得应该用于其操作的HTML。

使用这两个函数,我们可以将带有一个或一组HTML元素的哈希传递给或。

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

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

无论您是否喜欢Turbolinks,这可能是试用并了解它是否适​​合您应用中某个地方的好时机。

答案 1 :(得分:1)

对于带有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在此特定页面中工作。