【问题标题】:Turbolinks 5 doesn't work on some linksTurbolinks 5 不适用于某些链接
【发布时间】:2017-06-02 21:46:36
【问题描述】:

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

该链接没有附加 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 工作。

为什么?

【问题讨论】:

  • input 布局相比,您是否在 guess_layout 中使用了不同的 JavaScript 文件或不同的样式表?
  • 'input'guess_layout 给出相同的 &lt;head&gt;。 Js和样式被简单的stylesheet_link_tag,javascript_include_tag所包含。其中有= javascript_include_tag 'https://maps.googleapis.com.....'。但是这个&lt;head&gt; 用于所有布局。我的 guess_layout 仅在 url 中给出参数 ?print=1 时才解析为 'print'。然后&lt;head&gt; 有额外的 js 在页面打开时启动打印窗口。但在我的用例中,我不会去那里。我只是按.next 链接,它只是浏览到类似的页面。页面完全重新加载。
  • 奇怪。你能发布一个演示吗?
  • 我可以授予访问该站点的权限。你是这个意思吗?
  • 是的,一个指向演示问题的站点的链接。或者,如果您可以创建一个新的应用程序来演示同样可以解决的问题

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


【解决方案1】:

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

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

【讨论】:

  • 超级。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 2016-06-19
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多