Rails 4和Turbolinks – Meta标签不变

我有一个启用了turbo-links的Rails 4应用程序,但是我无法在更改页面时刷新元标记(不是完全刷新)。 我读到在加载turbo-links的javascript之前需要包含元标记,但它没有任何效果。 完全刷新可以完成这项工作,但不幸的是,这不是我搜索的内容。

布局/ application.html.haml

%html %head %title= "Title" - if content_for?(:meta_description) %meta{content: (yield :meta_description), name: "description"}/ %meta{content: (yield :meta_keywords), name: "keywords"}/ = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true = javascript_include_tag "application", "data-turbolinks-track" => true = csrf_meta_tags %body{class: params[:controller].gsub("/", "-"), id: 'top'} = render "shared/header" .body-content = render "shared/flash" = yield = render "shared/footer" = render "shared/analytics" 

助手/ application_helper.rb

def meta_tag(标题,描述)

 content_for :meta_keywords do title end content_for :meta_description do description end 

结束

这就是我称之为的方式

 = meta_tag('here s my title', 'and the keywords') 

谢谢

Turbolinks如何运作

Turbolinks旨在使标记保持相同,并且仅通过AJAX请求将标记替换为所请求页面的内容。 由于标记位于 ,因此不会通过Turbolinks请求更改它们。

SEO怎么样?

从SEO的角度来看,您不必担心在Turbolinks请求中更新标签,因为搜索引擎抓取工具将始终执行完整页面请求,并且不会执行Turbolinks javascript。

从用户的角度来看, 唯一需要为每个请求更改的标记是标记,因此对Turbolinks本身内置了特殊处理。

这种行为会改变吗?

这个“问题”已被提出并被击落几次,每次被DHH本人宣布为非问题,所以我不会指望这种行为很快就会改变。

看到:

这是一个TurboLinks问题

根据设计,Turbolinks基本上保持页面的相同并通过ajax调用文档的 ,如果它将保持不变(你使用相同的控制器/动作)。 保持应用程序性能是一件很疯狂的事情

这是Turbolinks的一个很好的解释


我用Javascript遇到了类似的问题,并且能够使用Jquery-Turbolinks gem来保持JS渲染

对于你的meta标签,虽然我不知道手头的解决方案,但我设法找到了一个可能受益的体面gem: MetaMagic 。 它允许您在视图中定义元标记,类似于content_block工具的工作方式。 这应该加载到每个http请求

我扩展了当前的turbolinks js;)

它将取代元标记和规范链接!

https://github.com/philklei/turbolinks

看看meta-tags gem

“使用pjax”部分