2011-01-14 46 views
3

我最近做了一個小的rails3應用程序來轉換用另一種語言編寫的舊cms。在遷移內容後,我在從數據庫輸出內容時遇到問題。Rails - 輸出內容,清理或<%= h?

@ content.desc字段有時有html。目前我能得到它的唯一方法是:

<%= sanitize content.desc %> 

但這是最好的方法嗎?當我使用<%=h @content.desc %>時,我仍然可以看到html標籤。當我使用<%= simple_format @content.desc %>時,我得到了噁心的間距。

有沒有一個權威指南,我可以在輸出內容時看到所有選項?我試圖搜索,但無法打開任何東西(rails newb,我知道)。

回答

5

任意字符串沒有標記爲「安全」將是HTML轉義默認情況下,Rails的3.一些方法,如sanitizehlink_to和許多其他助手返回安全字符串,從而使他們能夠按字面寫。有關更多信息,請參閱this blog post

如果您確定@content.desc中包含的HTML是安全的,您可以自己標記爲:<%= @content.desc.html_safe %>

0

除非我錯了,否則在顯示內容之前不應該對內容進行清理,因爲Rails 3默認會這樣做。這裏更多的信息:http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/

+3

實際上它並不消毒,它的HTML逃脫它。 [`sanitize`不同](http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize)。 – 2011-01-14 00:07:40

2

Rails 3已將HTML sanitisation更改爲默認啓用。如果你肯定,你渲染字符串是安全的,你可以使用

<%= @content.desc.html_safe! %>