2012-06-30 39 views
0

我有一個模型tag,屬性爲title (string)Rails:視圖中安全嗎?

A tag belongs_to型號documenthas_many :throught關聯。

在文檔#秀來看,我需要出示相關的該文檔的所有標籤,所以我做的:

%p= raw @document.tags.map{|t| link_to t.title.prepend('#'), t}.join(', ') 

這是安全的考慮,用戶可以能夠創建一個標籤?

如果不安全,我該如何達到相同的結果?

謝謝。

回答

0

是的,標籤的標題在成爲鏈接內容之前將被轉義,所以即使HTML中有它,也會呈現,而不是原始輸出。 輸出沒有轉義這裏是從join產生的字符串,這很好。

+0

謝謝你的解釋。 – HelloThor

0

一般來說,所有的邏輯(或儘可能多的)應該被移動到助手或模型。我不會說這是「安全的」或「不安全的」,但總的來說這是很好的做法。

0

在這種情況下,它是安全的link_to將逃脫它的說法,但爲何要冒險(也許是塊內將在幾個月內修改,等...),使用safe_join

%p= safe_join @document.tags.map{|t| link_to t.title.prepend('#'), t}, ', ' 

或使用我的rails_join「寶石」,你可以安全地做你的join而不需要raw