2017-06-02 94 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