2016-04-22 44 views
0

我开发了Rails应用程序。Rails:如何不在“<title>”标签中逃脱

&等字符在<title>标记中被转义为&amp;

例如,在标题中显示foo & bar,例如foo &amp; bar

当我使用raw时,它可以像我期望的那样显示。但我不想使用raw,因为数据将由用户输入。

我想显示像this post(请只看标题,内容与我的问题无关)。尽管由用户输入,标题中仍显示&

我的代码如下。

application.html.erb

<head> 
    <title><%= full_title(yield(:title)) %></title> 
    ... 

application_helper.rb

def full_title(page_title = '') 
    base_title = "app name" 
    if page_title.empty? 
     base_title 
    else 
     page_title + " | " + base_title 
    end 
    end 

我在一些视图文件添加provide,如show.html.erb

<% provide(:title, @schedule.title) %> #this title is inputted by user 

是否可以逃脱它,但允许一些字符未转义?

+0

使用'.html_safe'方法 – uzaif

+2

.html_safe等价于使用raw。切勿在用户输入时使用它。 – hypern

+4

我很困惑。那么你想逃避还是不? –

回答

0

你问如何避免逃跑,但它听起来像你真的想浏览器显示“&”而不是“&amp;”。

如果您使用浏览器的“查看源文件”功能上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;只是它的方式“应该”。

观察到文档以DOCTYPE声明开头。一个以别的东西开头的文档可能会触发浏览器的兼容性quirks mode

在您的Rails应用程序中使用浏览器的“查看源代码”功能。文档是否以DOCTYPE声明开头? (<DOCTYPE html>很好。)序列&amp;是否自己出现? (如果您看到&amp;amp;或类似的文字,则表示您正在编码一个已编码的字符串。)

+0

感谢您的评论,@RJHunter。我的html以'<!DOCTYPE html>'开头。它显示' foo & amp;栏'。 – SamuraiBlue

+0

如果您的应用程序正在发送“& amp”,到浏览器,那么你的应用程序正在逃避已经逃脱的东西。例如,也许应用程序HTML的输入部分 - 在将内容存储到数据库中之前将其转义。之后,应用程序的显示部分将从数据库中读取内容,然后HTML将其转换为HTML格式。 – RJHunter