Rails:如何不在“<title>”标签中转义

时间:2016-04-22 09:31:48

标签: ruby-on-rails ruby ruby-on-rails-4

&lt; p&gt;我开发了Rails app。&lt; / p&gt; &lt; p&gt;&lt; code&gt;&amp;&lt; / code&gt;等字符被转义为&lt; code&gt;&amp; amp;&lt; / code&gt;在&lt; code&gt;&lt; title&gt;&lt; / code&gt;中。标签&lt; / p为H. &lt; p&gt;例如,&lt; code&gt; foo&amp;巴≤; /代码&GT;显示如&lt; code&gt; foo&amp; amp;巴≤; /代码&GT;在标题中。&lt; / p&gt; &lt; p&gt;当我使用&lt; code&gt; raw&lt; / code&gt;时,它可以按照我的预期显示。但我不想使用&lt; code&gt; raw&lt; / code&gt;因为数据将由用户输入。&lt; / p&gt; &lt; p&gt;我想显示像&lt; a href =“https://stackoverflow.com/questions/11417510/symfony-2-twig-how-not-to-escape-field-value-used-with -backbonejs-symfony-2“&gt;这篇文章&lt; / a&gt; (请参阅标题。内容与我的问题无关)。 &LT;代码&GT;&安培;&LT; /代码&GT;尽管用户输入,但仍显示在标题中。&lt; / p&gt; &lt; p&gt;我的代码如下。&lt; / p&gt; &LT p为H.;&LT;强&GT; application.html.erb&LT; /强&GT;&LT; / p为H. &LT;预&GT;&LT;代码&GT;&LT; HEAD&GT;   &lt; title&gt;&lt;%= full_title(yield(:title))%&gt;&lt; / title&gt;   ... &LT; /代码&GT;&LT; /预&GT; &LT p为H.;&LT;强&GT; application_helper.rb&LT; /强&GT;&LT; / p为H. &LT;预&GT;&LT;代码&GT; def full_title(page_title ='')     base_title =“app name”     如果是page_title.empty?       base_title     其他       page_title +“|”+ base_title     结束   结束 &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;我添加&lt; code&gt;提供&lt; / code&gt;在某些视图文件中,例如&lt; strong&gt; show.html.erb&lt; / strong&gt;。&lt; / p&gt; &lt; pre&gt;&lt; code&gt;&lt;%provide(:title,@ schedule.title)%&gt; #this title由用户输入 &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;是否有可能将其转义,但允许某些字符未转义?&lt; / p&gt;

1 个答案:

答案 0 :(得分:0)

你问如何避免逃避,但这听起来像你真正想要的是浏览器显示&#34; &&#34;而不是&#34; &amp;&#34;。

如果您使用浏览器&#34;查看来源&#34; the page you said looked right上的功能,您会看到它以:

开头
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/QAPage">
<head>

<title>symfony2 - Symfony 2, Twig: how not to escape field value (used with backbonejs &amp; symfony 2) - Stack Overflow</title>

观察到&符号是实体编码为&amp;的,只是&#34;应该&#34;是

观察文档以DOCTYPE声明开头。

表示以其他内容开头的文档可能会触发浏览器quirks mode。{/ p>

使用您的浏览器&#34;查看来源&#34;在您的Rails应用程序上运行。该文件是否以DOCTYPE声明开头? (<DOCTYPE html>很好。)序列&amp;是否独立出现? (如果您看到&amp;amp;或类似字符,则表示您已编码已编码的字符串。)