2016-04-22 35 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