如何使用 Rails 在标题标签上显示一些 HTML 实体 [英] How to show some HTML entities on title tag using Rails

查看:26
本文介绍了如何使用 Rails 在标题标签上显示一些 HTML 实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行 Rails 4.2.x,但遇到以下问题.

某些页面的 </code> 是根据用户内容生成的.所以我必须使用 <code>sanitize</code> Rails 助手来正确清理它.</p><p>但是如果用户写了类似A&B"的东西,浏览器中显示的标题是<code>A&amp;B</code> 这是错误的.</p><p>使用 Rails 转义 <code><title></code> 标签上的用户内容的正确方法是什么?至少应该包含一些特殊字符...</p><div class="h2_lin"> 解决方案 </div><p>我们可以使用 <a href="http://apidock.com/ruby/CGI" rel="nofollow noreferrer">CGi</a>还有</p><pre><code>title = "A & B"=>A&B"string = CGI.escapeHTML(title)=>A&amp;B"string = CGI.unescapeHTML(title)=>A&B"</code></pre><p>Rails 提供了很多逃生选项</p><p>参考这些链接:</p><p><a href="https://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html">raw vs. html_safe vs. h to unescape html</a></p><p><a href="https://stackoverflow.com/questions/692921/rails-how-to-html-encode-escape-a-string-is-there-a-built-in">如何使用 HTML编码/转义字符串?有内置的吗?</a></p><p>如果你想删除标签,你可以使用 <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html" rel="nofollow noreferrer">SanitizeHelper</a></><p>另一种选择:<a href="http://edgeapi.rubyonrails.org/classes/HTML/WhiteListSanitizer.html" rel="nofollow noreferrer">WhiteListSanitizer</a></p><pre><code>white_list_sanitizer = Rails::Html::WhiteListSanitizer.newwhite_list_sanitizer.sanitize(s, 标签: %w())white_list_sanitizer.sanitize(s, tags: %w(table tr td), attributes: %w(id class style))</code></pre><p>您也可以使用<a href="https://github.com/rails/rails-html-sanitizer#railshtmltargetscrubber" rel="nofollow noreferrer">Rails::Html::TargetScrubber</a></a>><p>I'm running Rails 4.2.x and I have the following problem.</p> <p>The <code><title></code> of some pages are generated from user content. So I have to use the <code>sanitize</code> Rails helpers to properly clean it up.</p> <p>But if the user writes something like "A & B", the title shown in browser is <code>A &amp; B</code> which is wrong.</p> <p>What's the correct way of escaping user content on the <code><title></code> tag using Rails? At least some special characters should be included...</p><div class="h2_lin"> 解决方案 </div><p>We can use <a href="http://apidock.com/ruby/CGI" rel="nofollow noreferrer">CGi</a> also</p><pre><code>title = "A & B" => "A & B" string = CGI.escapeHTML(title) => "A &amp; B" string = CGI.unescapeHTML(title) => "A & B" </code></pre><p>Rails providing so many options to escape </p> <p>Refer these links:</p> <p><a href="https://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html">raw vs. html_safe vs. h to unescape html</a></p> <p><a href="https://stackoverflow.com/questions/692921/rails-how-to-html-encode-escape-a-string-is-there-a-built-in">How to HTML encode/escape a string? Is there a built-in?</a></p> <p>If you want remove tags you can use <a href="http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html" rel="nofollow noreferrer">SanitizeHelper</a></p> <p>One more option : <a href="http://edgeapi.rubyonrails.org/classes/HTML/WhiteListSanitizer.html" rel="nofollow noreferrer">WhiteListSanitizer</a></p><pre><code>white_list_sanitizer = Rails::Html::WhiteListSanitizer.new white_list_sanitizer.sanitize(s, tags: %w()) white_list_sanitizer.sanitize(s, tags: %w(table tr td), attributes: %w(id class style)) </code></pre><p>You can use <a href="https://github.com/rails/rails-html-sanitizer#railshtmltargetscrubber" rel="nofollow noreferrer">Rails::Html::TargetScrubber</a> also</p> <p>这篇关于如何使用 Rails 在标题标签上显示一些 HTML 实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!</p> </div> <div class="arc-body-main-more"> <span onclick="unlockarc('2506132');">查看全文</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="如何使用 XSLT 将一些标签转换为另一些标签" href="/2505865.html"> 如何使用 XSLT 将一些标签转换为另一些标签; </a> </li> <li> <a target="_blank" title="HTML / CSS - 在img标签上显示文字" href="/871400.html"> HTML / CSS - 在img标签上显示文字; </a> </li> <li> <a target="_blank" title="如何在json值内使用一些html元素标签" href="/875192.html"> 如何在json值内使用一些html元素标签; </a> </li> <li> <a target="_blank" title="JQuery的 - 如何添加一个HTML标签到一些HTML?" href="/865600.html"> JQuery的 - 如何添加一个HTML标签到一些HTML?; </a> </li> <li> <a target="_blank" title="在标签上显示时间" href="/1448471.html"> 在标签上显示时间; </a> </li> <li> <a target="_blank" title="目标实体“一些实体”找不到" href="/648331.html"> 目标实体“一些实体”找不到; </a> </li> <li> <a target="_blank" title="如何使用uiwebview显示一些网页?" href="/520825.html"> 如何使用uiwebview显示一些网页?; </a> </li> <li> <a target="_blank" title="如何使用jquery只在div中显示包含一些数据的标签?" href="/1026078.html"> 如何使用jquery只在div中显示包含一些数据的标签?; </a> </li> <li> <a target="_blank" title="Jekyll,修改一些html标签的呈现方式" href="/1596894.html"> Jekyll,修改一些html标签的呈现方式; </a> </li> <li> <a target="_blank" title="美丽的汤缺少一些html表格标签" href="/1968446.html"> 美丽的汤缺少一些html表格标签; </a> </li> <li> <a target="_blank" title="在&lt; pre&gt;中放入一些HTML标签?" href="/2121532.html"> 在&lt; pre&gt;中放入一些HTML标签?; </a> </li> <li> <a target="_blank" title="在HTML下拉列表中只显示一些选项" href="/657015.html"> 在HTML下拉列表中只显示一些选项; </a> </li> <li> <a target="_blank" title="Knitr HTML Loop-一些HTML输出,一些R输出" href="/1531713.html"> Knitr HTML Loop-一些HTML输出,一些R输出; </a> </li> <li> <a target="_blank" title="IE8不渲染一些HTML名称实体" href="/507656.html"> IE8不渲染一些HTML名称实体; </a> </li> <li> <a target="_blank" title="使用marquee标签和一些图像" href="/1137954.html"> 使用marquee标签和一些图像; </a> </li> <li> <a target="_blank" title="不承认一些标签" href="/265132.html"> 不承认一些标签; </a> </li> <li> <a target="_blank" title="在标题刷新时需要一些帮助......" href="/1037236.html"> 在标题刷新时需要一些帮助......; </a> </li> <li> <a target="_blank" title="显示CSS:一些div固定,一些灵活" href="/580872.html"> 显示CSS:一些div固定,一些灵活; </a> </li> <li> <a target="_blank" title="AngularJS忽略了一些标题" href="/2863017.html"> AngularJS忽略了一些标题; </a> </li> <li> <a target="_blank" title="如何创建一个标题栏,其中一些文本在左边,一些在右边?" href="/579582.html"> 如何创建一个标题栏,其中一些文本在左边,一些在右边?; </a> </li> <li> <a target="_blank" title="避免使用XSS并允许一些带有JavaScript的html标签" href="/1009982.html"> 避免使用XSS并允许一些带有JavaScript的html标签; </a> </li> <li> <a target="_blank" title="如何在实体框架中获取一些实体列?" href="/685778.html"> 如何在实体框架中获取一些实体列?; </a> </li> <li> <a target="_blank" title="在标签上显示JPEg附件" href="/1267863.html"> 在标签上显示JPEg附件; </a> </li> <li> <a target="_blank" title="在标签上显示串口数据" href="/1454437.html"> 在标签上显示串口数据; </a> </li> <li> <a target="_blank" title="图像未显示在标签上" href="/1062270.html"> 图像未显示在标签上; </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,在,标题,标,签上,显示,一些,html,实体'; 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>