2011-05-18 31 views
0

我正在嘗試修改我的消息系統以便能夠使用它向用戶發送報表。例如,用戶可能會完成一項工作,然後他會收到一封私人信息作爲報告。在Rails中創建報表系統

問題是將報告存儲到我的數據庫。報告不僅僅是文字。它可以有以前存儲在數據庫中的鏈接,甚至用戶生成的數據。

我的想法是使用render_to_string將視圖呈現給變量,然後將其作爲新消息存儲到數據庫。但是,用戶生成的數據和鏈接是一個問題,因爲它們不會被轉義。理想情況下,不應該像
這樣的html標籤以及link_to。但是,如果報告中某處存在<%= user.username%>,則應該轉義該項。

我有點絆倒了那個。你知道一個有效的方法嗎?

+0

使用'<%= h(user.username)%>'來進行模板替換是HTML安全的嗎? – tadman 2011-05-18 20:08:02

+0

嗯,是的,可以做到這一點你是正確的。只需使用<%= raw作爲其他任何內容並使用h來安全地替換對嗎? – Spyros 2011-05-18 20:18:06

+0

如果Rails 3正在生成HTML輸出,它會自動爲您自動轉義,否則它會保持原樣。在Rails 2中,您需要使用'h'手動啓用它。 – tadman 2011-05-18 21:12:27

回答

1

一般來說任何在HTML模式下,您可以逃脫

<%= h(user.username) %> 

這是簡單的「渲染HTML安全」幫手到所有視圖的方法。純文本不需要以相同的方式轉義。