2017-06-02 95 views
0

我无法在这个看似简单的问题上找到任何答案。在我的rails5应用程序中,一些链接使用turbolinks来加载新页面。但有些只是启动整页重新加载。Turbolinks 5在某些链接上不起作用

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

此链接使用turbolinks

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

在操作它

render layout: 'input' 

而这个链接

= 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工作。

为什么?

+0

您使用的是不同的JavaScript文件或在你的'guess_layout'不同的样式表相比,你'input'布局? –

+0

“input”和“guess_layout”都给出了相同的“”。 Js和样式包含在简单的'stylesheet_link_tag','javascript_include_tag'中。其中有'= javascript_include_tag'https://maps.googleapis.com .....“。但是这个''用于所有布局。 我的'guess_layout'只在url中给出param'?print = 1'时才解析为''print''。然后''有额外的js在页面打开时启动打印窗口。但在我的使用案例中,我不去那里。我只需按'.next'链接,即可浏览到类似的页面。并且页面完全重新加载。 – Dahan

+0

奇怪。你能发布这个演示吗? –

回答

1

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

Turbolinks将只处理它认为是HTML的链接。也就是说,没有扩展名的那些(例如/post/1234),或那些在最后一段(例如/post/1234.html)之后具有html/htm/xhtml的那些。在你的情况下,正在执行整页加载的链接以类似于:/30.335098600000038。 Turbolinks不会认为这是一个HTML资源,所以不会处理它。

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

qimen/hour/chart?time=2017-06-03T15:27:48+03:00&city=St.%20Petersburg&longitude=30.335098600000038 
+0

超级。谢谢! – Dahan