Turbolinks 5 在某些链接上不起作用
Turbolinks 5 doesn't work on some links
对于这个看似简单的问题,我找不到任何答案。在我的 rails5 应用程序中,一些 links 确实使用 turbolinks 来加载新页面。但有些只是启动整页重新加载。
links 没有附加 js,turbolinks 在 links 上没有被禁用。
这个link使用turbolinks:
= link_to qm_input_path('hour') do ...
<a class="navbar-brand" href="/qimen/hour/input"> ...
在它有的动作中
render layout: 'input'
而这个link 不:
= 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"> ...
在它有的动作中
render layout: guess_layout
因此,没有明确阻止 turbolinks 工作。
为什么?
问题是您链接中的 href
包含句点 (.
)。
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
对于这个看似简单的问题,我找不到任何答案。在我的 rails5 应用程序中,一些 links 确实使用 turbolinks 来加载新页面。但有些只是启动整页重新加载。
links 没有附加 js,turbolinks 在 links 上没有被禁用。
这个link使用turbolinks:
= link_to qm_input_path('hour') do ...
<a class="navbar-brand" href="/qimen/hour/input"> ...
在它有的动作中
render layout: 'input'
而这个link 不:
= 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"> ...
在它有的动作中
render layout: guess_layout
因此,没有明确阻止 turbolinks 工作。
为什么?
问题是您链接中的 href
包含句点 (.
)。
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