2011-05-13 11 views
2

我正在將舊的Rails應用程序(1.1.6)升級到Rails 3.很明顯,很多變化。有一件事似乎是Rails自動轉義掉視圖中的內容。然而,我有一種情況,我有一個幫手爲我生成IMG標籤,而Rails會自動轉義結果內容。Rails自動隱藏HTML - 如何阻止它?

<%= random_image('public/images/headers') %> 

這導致逃脫的內容,就像一個會期望我已經做到了這一點(在1.1.6)

<%= h random_image('public/images/headers') %> 

有沒有辦法把這件事告訴逃生?

+0

你真的應該進入閱讀發佈記錄的習慣。什麼「h」以前做的事情現在是Rails 3的默認行爲,並且你必須做一些事情才能避免自動轉義。只需[命令] .html_safe任何字符串生成命令,或者將其放入raw(...)中,就像下面的人說的那樣。哦,並閱讀RELEASENOTES。總是。真。 :) – 2011-05-13 19:52:27

+0

@Mörre老實說,我不確定要閱讀哪些發行說明。不知道這是Rails 2.x特性還是3.x特性 - 並且有很多版本,每個版本都有很多細節。 – 6of58 2011-05-13 20:02:02

+0

@Mörre我承認一個有效的觀點。我不得不承認,這有點令人生畏,希望能夠快速解決一個簡單的問題。考慮到我知道在3.x中不再有相關的1.1.6 - > 2.x變化,我並不期望通過這些筆記進行解析。就學習而言,我可能會「從頭開始」,並在第一時間拿起一本好的Rails 3書籍/教程。 – 6of58 2011-05-13 20:53:25

回答

3
.html_safe 

它可能需要助手裏面

+0

在你的視圖中使用原始方法,在你的幫助器中使用.html_safe是一種慣例,但是任何一種方式都可以。 – MDaubs 2011-05-14 12:30:09

+0

謝謝,我從來沒有聽說過raw,在railscasts上找到.html_safe從2遷移到3 – Nick 2011-05-14 20:40:42

5
<%= raw random_image('public/images/headers') %> 
+0

噴吐JSON表格控制器查看imo的最佳解決方案。 – sargas 2014-04-28 22:28:38

2

有沒有在這可以在軌道3應用

  1. html_safe
  2. 實現方式h

raw和h只能在控制器中使用,並且視圖這些方法在助手中定義。

html_safe可以在任何地方在Rails應用程序即可以使用,可以在模型中,助手,控制器等

用於更多信息,請閱讀http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/

+2

Ahem,「h」是「raw」的對立面,與以往一樣。只有1.和2.是問題的解決方案。 – 2011-05-13 20:06:41