2011-03-15 69 views
3

在Rails中存儲包含粗體,項目符號和不同大小的格式化文本的主體是什麼?爲MySQL和Heroku上的Rails設置豐富的文本支持

首先,text字段類型是否有能力保存這個?

如果是這樣,那麼我確實需要使用富文本編輯器進行編輯,並使用<pre>進行顯示?

回答

4

是的,text類型設計用於存儲字符串。

通常的做法是使用生成HTML的Javascript富文本編輯器。將原始HTML直接保存到數據庫,然後在顯示時對其進行清理。這是爲了防止人們輸入Javascript和其他黑客進入文本區域,當其他訪問者查看他們的輸入時會被執行。

Rails 3默認會清理您的輸出,所以全部 HTML將被轉義。您需要撥打<%= @model.rich_text.html_safe %>以跳過此消毒,或者(更好!)呼叫<%= sanitize(@model.rich_text, :tags => %w(b i p)) %>,傳遞允許標記的明確列表。

我沒有Heroku的經驗,但我無法想象它會有什麼不同。

+1

除JavaScript以外,您可以使用像wmd-editor這樣的降價編輯器和像bluecloth或RDiscount那樣的寶石 – 2011-03-15 11:34:23

+0

絕對 - 在某些情況下,這是絕對可取的,因爲它避免了很多直接輸出HTML的問題,您的用戶可以更好地控制其格式。儘管這對用戶來說有點技術性。 Stackoverflow使用大規模殺傷性衍生物,給你一個markdown格式化語法的想法。 – nfm 2011-03-15 11:38:53

+0

這是一個安全的HTML元素列表白名單? 'h1 h2 h3 h4 b i p pre div ul ol li li strong strike em a span img br' – sscirrus 2011-03-15 14:49:27