2011-05-27 57 views
1

我試圖將tinyMCE的內容存儲到「detail」coloumn中。tiny mce display rails 3

現在,當我顯示它顯示的內容與所有<p>標籤<i>標籤等 這是在rails3中的安全功能。

但我不希望顯示<p>標記,我希望它被呈現爲HTML。

的一種方式,我發現是<%= something.detail.html_safe %>

我想其他的方式是建立在模型中的功能類似

def detail_safe 
    return self.detail.html_safe 
    end 

,並顯示使用<%= something.detail_safe %>

我需要改變<%= %>無論哪種方式標籤在許多地方。有更簡單的解決方案嗎?或者我應該在每個地方手動更改?

謝謝。

回答

1

在模型:

def detail 
    self[:detail].html_safe if self[:detail] 
end 

請注意,你總是會得到html_safe輸出在這種情況下,當你做model_object.detail

+0

這不會觸發無限循環嗎? – Wukerplank 2011-05-27 11:42:59

+0

請看編輯。這個想法是重寫ActiveRecord屬性訪問器。 – 2011-05-27 12:39:04

+0

def detail self.detail.html_safe end 會導致infinte循環:) – 2011-05-30 04:36:29

1

不管你怎麼做,你都必須改變你所有的<%= %>

的選項有:

<%= something.detail_safe %> 
<%= something.detail.html_safe %> 
<%= raw something.detail %> 

我能想到的是關閉XSS保護的唯一選擇 - 但不這樣做!