Rails 4 和 Turbolinks - 元标签不变 [英] Rails 4 and Turbolinks - Meta Tags not changing

查看:51
本文介绍了Rails 4 和 Turbolinks - 元标签不变的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a Rails 4 app with turbo-links enabled, but I can't get the meta tags to refresh when changing the page ( not a full refresh ) . I read that the meta-tags need to be included before the javascript that loads the turbo-links but it has no effect. A full refresh does the job, but unfortunately this is not what i search for.

布局/application.html.haml

layout/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"

helpers/application_helper.rb

helpers/application_helper.rb

def meta_tag(title, description)

def meta_tag(title, description)

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 旨在保持 <head> 标记相同,并且仅通过 AJAX 请求将 标记替换为所请求页面的内容.由于您的 标签位于 中,因此它们不会通过 Turbolinks 请求进行更改.

How Turbolinks works

Turbolinks is designed to keep the <head> tag the same and merely replaces the <body> tag with the contents of the requested page via an AJAX request. Since your <meta> tags are located in the <head>, they won't be changed via a Turbolinks request.

从 SEO 的角度来看,您无需担心 <meta> 标签在 Turbolinks 请求上更新,因为搜索引擎爬虫将始终执行完整页面请求并且不会t 执行 Turbolinks javascript.

From an SEO perspective, you don't need to worry about the <meta> tags being updated on a Turbolinks request because the search engine crawlers will always do a full page request and won't execute the Turbolinks javascript.

从用户的角度来看, 中唯一需要为每个请求更改的标签是 </code> 标签,因此特殊处理这是 Turbolinks 本身内置的.<em class="showen"></em></p> <p class="en">From a user's perspective, the only tag in the <code><head></code> that needs to change for each request is the <code><title></code> tag, so special handling for that was built-in to Turbolinks itself. </p> <p class="cn">这个问题"已经被提出和驳回过几次,每次都被 DHH 自己宣布为非问题,所以我不会指望这种行为会很快改变.<em class="showen"></em></p> <p class="en">This "issue" has been raised and shot down a couple times, each time being declared a non-issue by DHH himself, so I wouldn't count on this behavior changing any time soon. </p> <p class="cn">见:</p> <ul class="cn"><li><a href="https://github.com/rails/turbolinks/issues/81">https://github.com/rails/turbolinks/issues/81</a></li><li><a href="https://github.com/rails/turbolinks/pull/165">https://github.com/rails/turbolinks/pull/165</a></li></ul> <p>这篇关于Rails 4 和 Turbolinks - 元标签不变的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!</p> </div> <div class="arc-body-main-more"> <span onclick="unlockarc('2386301');">查看全文</span> </div> </div> <div> </div> <div class="wwads-cn wwads-horizontal" data-id="166" style="max-width:100%;border: 4px solid #666;"></div> </div> </article> <div id="arc-ad-2" class="mb-1"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5038752844014834" crossorigin="anonymous"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5038752844014834" data-ad-slot="3921941283"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="widget bgwhite radius-1 mb-1 shadow widget-rel"> <h5>相关文章</h5> <ul> <li> <a target="_blank" title="带有 Turbolinks 的 Rails Bootstrap 4" href="/2449882.html"> 带有 Turbolinks 的 Rails Bootstrap 4; </a> </li> <li> <a target="_blank" title="使用基础和Turbolinks与Rails 4的麻烦" href="/1092028.html"> 使用基础和Turbolinks与Rails 4的麻烦; </a> </li> <li> <a target="_blank" title="Rails 4 TurboLinks和jQuery Dynamic Links表现不佳" href="/1482077.html"> Rails 4 TurboLinks和jQuery Dynamic Links表现不佳; </a> </li> <li> <a target="_blank" title="使用 Google Analytics 的 Rails 4 turbolinks" href="/2690288.html"> 使用 Google Analytics 的 Rails 4 turbolinks; </a> </li> <li> <a target="_blank" title="Rails 4 Turbolinks使表单多次提交" href="/1010156.html"> Rails 4 Turbolinks使表单多次提交; </a> </li> <li> <a target="_blank" title="Rails 4:在特定页面中禁用Turbolinks" href="/1007956.html"> Rails 4:在特定页面中禁用Turbolinks; </a> </li> <li> <a target="_blank" title="Rails 4 + simple_form和jQuery UI。 Datepicker不通过turbolinks工作" href="/613813.html"> Rails 4 + simple_form和jQuery UI。 Datepicker不通过turbolinks工作; </a> </li> <li> <a target="_blank" title="Rails Turbolinks破烂不堪" href="/1489778.html"> Rails Turbolinks破烂不堪; </a> </li> <li> <a target="_blank" title="二元搜索和不变关系" href="/2166215.html"> 二元搜索和不变关系; </a> </li> <li> <a target="_blank" title="Rails:如何在 Rails 5 中禁用 turbolinks?" href="/2388956.html"> Rails:如何在 Rails 5 中禁用 turbolinks?; </a> </li> <li> <a target="_blank" title="Turbolinks:什么是显示页面缓慢进展的Rails的4路?" href="/343160.html"> Turbolinks:什么是显示页面缓慢进展的Rails的4路?; </a> </li> <li> <a target="_blank" title="如何使用 Rails 4 的 Turbolinks 创建 Youtube 风格的加载栏?" href="/2690382.html"> 如何使用 Rails 4 的 Turbolinks 创建 Youtube 风格的加载栏?; </a> </li> <li> <a target="_blank" title="如何使用turbolinks在Rails4上启用`sorttable.js`" href="/1107830.html"> 如何使用turbolinks在Rails4上启用`sorttable.js`; </a> </li> <li> <a target="_blank" title="如何创建使用Rails 4的Turbolinks YouTube的风格装载吧?" href="/49500.html"> 如何创建使用Rails 4的Turbolinks YouTube的风格装载吧?; </a> </li> <li> <a target="_blank" title="Rails Turbolinks中断提交远程表单" href="/1883369.html"> Rails Turbolinks中断提交远程表单; </a> </li> <li> <a target="_blank" title="Rails turbolinks 中断提交远程表单" href="/2690456.html"> Rails turbolinks 中断提交远程表单; </a> </li> <li> <a target="_blank" title="Polymer JS与Rails Turbolinks冲突" href="/1092324.html"> Polymer JS与Rails Turbolinks冲突; </a> </li> <li> <a target="_blank" title="GMaps4Rails和Turbolinks无法在无整页刷新的情况下加载" href="/827045.html"> GMaps4Rails和Turbolinks无法在无整页刷新的情况下加载; </a> </li> <li> <a target="_blank" title="在 Rails link_to 中使用 turbolinks" href="/2388561.html"> 在 Rails link_to 中使用 turbolinks; </a> </li> <li> <a target="_blank" title="Rails 4 + simple_form 和 jQuery UI.日期选择器无法通过 turbolinks 工作" href="/2690401.html"> Rails 4 + simple_form 和 jQuery UI.日期选择器无法通过 turbolinks 工作; </a> </li> <li> <a target="_blank" title="Rails turbolinks 长请求不显示页面加载" href="/2386580.html"> Rails turbolinks 长请求不显示页面加载; </a> </li> <li> <a target="_blank" title="Tkinter标签textvariable不变" href="/1687974.html"> Tkinter标签textvariable不变; </a> </li> <li> <a target="_blank" title="防止谷歌地图JS由Rails Turbolinks多次执行" href="/1060222.html"> 防止谷歌地图JS由Rails Turbolinks多次执行; </a> </li> <li> <a target="_blank" title="创建带联接表元数据的Rails 4表单" href="/774588.html"> 创建带联接表元数据的Rails 4表单; </a> </li> <li> <a target="_blank" title="使用Simple_Form和rails 4在标签中嵌套输入" href="/2895126.html"> 使用Simple_Form和rails 4在标签中嵌套输入; </a> </li> </ul> </div> <div class="mb-1"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5038752844014834" crossorigin="anonymous"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5038752844014834" data-ad-slot="3921941283"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="side"> <div class="widget widget-side bgwhite mb-1 shadow"> <h5>其他开发最新文章</h5> <ul> <li> <a target="_blank" title="拒绝显示一个框架,因为它将'X-Frame-Options'设置为'sameorigin'" href="/893060.html"> 拒绝显示一个框架,因为它将'X-Frame-Options'设置为'sameorigin'; </a> </li> <li> <a target="_blank" title="什么是&QUOT; AW&QUOT;在部分标志属性是什么意思?" href="/303988.html"> 什么是&QUOT; AW&QUOT;在部分标志属性是什么意思?; </a> </li> <li> <a target="_blank" title="在运行npm install命令时获取'npm WARN弃用'警告" href="/840917.html"> 在运行npm install命令时获取'npm WARN弃用'警告; </a> </li> <li> <a target="_blank" title="cmake无法找到openssl" href="/516280.html"> cmake无法找到openssl; </a> </li> <li> <a target="_blank" title="从Spark的scala中的* .tar.gz压缩文件中读取HDF5文件" href="/850628.html"> 从Spark的scala中的* .tar.gz压缩文件中读取HDF5文件; </a> </li> <li> <a target="_blank" title="Twitter :: Error :: Forbidden - 无法验证您的凭据" href="/630061.html"> Twitter :: Error :: Forbidden - 无法验证您的凭据; </a> </li> <li> <a target="_blank" title="我什么时候需要一个fb:app_id或者fb:admins?" href="/747981.html"> 我什么时候需要一个fb:app_id或者fb:admins?; </a> </li> <li> <a target="_blank" title="将.db文件导入R" href="/902960.html"> 将.db文件导入R; </a> </li> <li> <a target="_blank" title="npm通知创建一个lockfile作为package-lock.json。你应该提交这个文件" href="/744854.html"> npm通知创建一个lockfile作为package-lock.json。你应该提交这个文件; </a> </li> <li> <a target="_blank" title="拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src'self'”" href="/819167.html"> 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src'self'”; </a> </li> </ul> </div> <div class="widget widget-side bgwhite mb-1 shadow"> <h5> 热门教程 </h5> <ul> <li> <a target="_blank" title="Java教程" href="/OnLineTutorial/java/index.html"> Java教程 </a> </li> <li> <a target="_blank" title="Apache ANT 教程" href="/OnLineTutorial/ant/index.html"> Apache ANT 教程 </a> </li> <li> <a target="_blank" title="Kali Linux教程" href="/OnLineTutorial/kali_linux/index.html"> Kali Linux教程 </a> </li> <li> <a target="_blank" title="JavaScript教程" href="/OnLineTutorial/javascript/index.html"> JavaScript教程 </a> </li> <li> <a target="_blank" title="JavaFx教程" href="/OnLineTutorial/javafx/index.html"> JavaFx教程 </a> </li> <li> <a target="_blank" title="MFC 教程" href="/OnLineTutorial/mfc/index.html"> MFC 教程 </a> </li> <li> <a target="_blank" title="Apache HTTP客户端教程" href="/OnLineTutorial/apache_httpclient/index.html"> Apache HTTP客户端教程 </a> </li> <li> <a target="_blank" title="Microsoft Visio 教程" href="/OnLineTutorial/microsoft_visio/index.html"> Microsoft Visio 教程 </a> </li> </ul> </div> <div class="widget widget-side bgwhite mb-1 shadow"> <h5> 热门工具 </h5> <ul> <li> <a target="_blank" title="Java 在线工具" href="/Onlinetools/details/4"> Java 在线工具 </a> </li> <li> <a target="_blank" title="C(GCC) 在线工具" href="/Onlinetools/details/6"> C(GCC) 在线工具 </a> </li> <li> <a target="_blank" title="PHP 在线工具" href="/Onlinetools/details/8"> PHP 在线工具 </a> </li> <li> <a target="_blank" title="C# 在线工具" href="/Onlinetools/details/1"> C# 在线工具 </a> </li> <li> <a target="_blank" title="Python 在线工具" href="/Onlinetools/details/5"> Python 在线工具 </a> </li> <li> <a target="_blank" title="MySQL 在线工具" href="/Onlinetools/Dbdetails/33"> MySQL 在线工具 </a> </li> <li> <a target="_blank" title="VB.NET 在线工具" href="/Onlinetools/details/2"> VB.NET 在线工具 </a> </li> <li> <a target="_blank" title="Lua 在线工具" href="/Onlinetools/details/14"> Lua 在线工具 </a> </li> <li> <a target="_blank" title="Oracle 在线工具" href="/Onlinetools/Dbdetails/35"> Oracle 在线工具 </a> </li> <li> <a target="_blank" title="C++(GCC) 在线工具" href="/Onlinetools/details/7"> C++(GCC) 在线工具 </a> </li> <li> <a target="_blank" title="Go 在线工具" href="/Onlinetools/details/20"> Go 在线工具 </a> </li> <li> <a target="_blank" title="Fortran 在线工具" href="/Onlinetools/details/45"> Fortran 在线工具 </a> </li> </ul> </div> </div> </div> <script type="text/javascript">var eskeys = 'rails,4,和,turbolinks,元,标签,不变'; var cat = 'cc';';//other-dev</script> </div> <div id="pop" onclick="pophide();"> <div id="pop_body" onclick="event.stopPropagation();"> <h6 class="flex flex101"> 登录 <span onclick="pophide();">关闭</span> </h6> <div class="pd-1"> <div class="wxtip center"> <span>扫码关注<em>1秒</em>登录</span> </div> <div class="center"> <img id="qr" src="https://huajiakeji.com/Content/Images/qrydx.jpg" alt="" style="width:150px;height:150px;" /> </div> <div style="margin-top:10px;display:flex;justify-content: center;"> <input type="text" placeholder="输入验证码" id="txtcode" autocomplete="off" /> <input id="btngo" type="button" onclick="chk()" value="GO" /> </div> <div class="center" style="margin: 4px; font-size: .8rem; color: #f60;"> 发送“验证码”获取 <em style="padding: 0 .5rem;">|</em> <span style="color: #01a05c;">15天全站免登陆</span> </div> <div id="chkinfo" class="tip"></div> </div> </div> </div> <script type="text/javascript" src="https://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> <script type="text/javascript" src="https://img01.yuandaxia.cn/Scripts/highlight.min.js"></script> <script type="text/javascript" src="https://img01.yuandaxia.cn/Scripts/base.js?v=0.22"></script> <script type="text/javascript" src="https://img01.yuandaxia.cn/Scripts/tui.js?v=0.11"></script> <footer class="footer"> <div class="container"> <div class="flink mb-1"> 友情链接: <a href="https://www.it1352.com/" target="_blank">IT屋</a> <a href="https://huajiakeji.com/" target="_blank">Chrome插件</a> <a href="https://www.cnplugins.com/" target="_blank">谷歌浏览器插件</a> </div> <section class="copyright-section"> <a href="https://www.it1352.com" title="IT屋-程序员软件开发技术分享社区">IT屋</a> ©2016-2022 <a href="http://www.beian.miit.gov.cn/" target="_blank">琼ICP备2021000895号-1</a> <a href="/sitemap.html" target="_blank" title="站点地图">站点地图</a> <a href="/Home/Tags" target="_blank" title="站点标签">站点标签</a> <a target="_blank" alt="sitemap" href="/sitemap.xml">SiteMap</a> <a href="/1155981.html" title="IT屋-免责申明"><免责申明></a> 本站内容来源互联网,如果侵犯您的权益请联系我们删除. </section> <!--统计代码--> <script type="text/javascript"> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?0c3a090f7b3c4ad458ac1296cb5cc779"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script type="text/javascript"> (function () { var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </div> </footer> </body> </html>