Turbolinks 5 在某些链接上不起作用

Dah*_*han 0 turbolinks ruby-on-rails-5 turbolinks-5

对于这个看似简单的问题,我找不到任何答案。在我的 rails5 应用程序中,某些链接确实使用 turbolinks 来加载新页面。但有些只是启动整页重新加载。

该链接没有附加 js,该链接上未禁用 turbolinks。

此链接使用 turbolinks

= link_to qm_input_path('hour') do ...
<a class="navbar-brand" href="/qimen/hour/input"> ...
Run Code Online (Sandbox Code Playgroud)

在行动中它有

render layout: 'input'
Run Code Online (Sandbox Code Playgroud)

而这个链接没有

= link_to qm_chart_path(@foo, @bar), class: 'btn btn-default pull-right next' do ...
<a class="btn btn-default pull-right next" href="/qimen/hour/chart/foo/bar"> ...
Run Code Online (Sandbox Code Playgroud)

在行动中它有

render layout: guess_layout
Run Code Online (Sandbox Code Playgroud)

因此,没有任何内容明确阻止 turbolinks 工作。

为什么?

Dom*_*tie 5

问题是href链接中的s 包含句点 ( .)。

Turbolinks 只会处理它认为是 HTML 的链接。即,那些没有扩展名(例如/post/1234),或那些具有一个html/ htm/xhtml之后的最后一个时间段(例如/post/1234.html)。在您的情况下,执行完整页面加载的链接以以下内容结尾:/30.335098600000038。Turbolinks 不会将其视为 HTML 资源,因此不会处理它。

为了解决这个问题,我建议对可能包含句点的参数使用查询字符串。例如整理您的链接之一,您可以尝试:

qimen/hour/chart?time=2017-06-03T15:27:48+03:00&city=St.%20Petersburg&longitude=30.335098600000038
Run Code Online (Sandbox Code Playgroud)