我有一個名爲Feature
的模型,其中包含一個名爲body_string
的變量,其中包含我想呈現的HTML標記,而不是轉義。有沒有什麼方法可以像html_safe一樣定義模型的屬性?
在我的意見中,每當我參考body_string
時,我需要使用<%=raw
或.html_safe
。這看起來多餘而且不太乾。
有沒有什麼辦法可以一勞永逸的建立body_string
變量爲html_safe
?
我假設這會發生在app/models/feature.rb
文件中,但我無法弄清楚正確的語法會是什麼。我想到了這個:
def body_string
return self.body_string.html_safe
end
但Rails不喜歡它;它會引發一個stack level too deep
異常。
當然,我可以定義一個變量/方法有不同的名稱:
def safe_body_string
return self.body_string.html_safe
end
然後就是改變從body_string
到safe_body_string
在視圖中的所有引用。但不知怎的,這看起來幾乎與未使用乾淨一樣簡單地使用raw
或.html_safe
擺在首位。
任何見解如何最好地處理這個?我覺得我必須有一些非常優雅的東西,我只是沒有看到。
無論DRY(只有3個字符),您應該每次輸出'body_string'都使用'raw'。當你打算輸出未經編碼的HTML時,你有被迫非常明確的原因,開發人員希望*看到*你是明確的。您將顯示邏輯有效地轉移到模型中,並且讓那些正在將原始HTML發送到瀏覽器的人看到您的視圖時不那麼明顯。 – meagar 2011-06-07 17:54:14
我很遺憾,我只有一個upvote給予@ meagar的評論 – Simon 2011-06-07 18:12:30