1

问题是如何同时使用 turbolinks 和每个页面特定的元标记?

这是 application.js:

//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require dashboard
//= require turbolinks

这是应用程序布局视图:

<title><%= yield_or_default(:title) -%></title>
<meta name="description" content="<%= yield_or_default(:meta_desc) -%>">
<meta name="keywords" content="<%= yield_or_default(:meta_keywords) -%>">
<meta name="robots" content="<%= yield_or_default(:robots) -%>">
<%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

这是仪表板 CoffeeScript:

jQuery ->
  $("#list_tags").html(list_tags())

list_tags = ->  
  "Title: \"" + $('title').text() + "\"<br />" +
  "Meta Description: \"" + $('meta[name=description]').attr('content') + "\"<br />" +
  "Meta Keywords: \"" + $('meta[name=keywords]').attr('content') + "\"<br />" +
  "Robots: \"" + $('meta[name=robots]').attr('content') + "\""

在应用程序布局的顶部:

<%= link_to "Dashboard", root_path -%>
<%= link_to "Reports", reports_path -%>
etc...

当您在 Dashboard 和 Reports 之间来回单击时,显示的标题标签会按照您的预期随着每次点击而变化(turbolinks 每次都会更新标题),但是在您刷新整个页面之前元标签不会改变。

如何破坏特定头部元素的 turbolinks?

如果我在每个指向具有唯一元信息的页面的链接上添加 data-no-turbolink,我看不出保留 turbolink 有什么好处。

我在 github 上阅读了有关 turbolinks 的问题,其他人也提出了这个问题,但我没有看到解决方案?希望我遗漏了一些明显的东西。

4

2 回答 2

8

我认为 turbolinks 不会对 SEO 产生影响。原因是搜索引擎机器人没有点击启用 javascript 的链接。

他们创建一个链接列表并分别访问它们以获取页面的内容......因此页面搜索引擎机器人将不会在“点击的 turbolinks 链”中。

使用您网站的人在浏览您的网站时可能没有使用元描述标签。

于 2014-01-09T21:48:16.297 回答
2

我将回答我自己的问题并将其留在这里,以防有人遇到同样的困惑。

元标记和其他代码/脚本“破坏 turbolinks”的方法是在 turbolinks之前的 <head> 部分中列出。

这是最终为我工作的要点。

虽然这会呈现带有所需更新的 <head> 部分的页面,但要记住的问题是 DOM 仍将是缓存的内容。

也就是说,上面的代码是正确的。只是不是我对它如何工作的期望。

于 2013-09-07T17:41:55.840 回答