2011-07-31 10 views
1

私は相対レールの初心者で、サニタイズ宝石について質問があります。インストールと使用は簡単ですが、何らかの理由で自分の要素配列を選択すると、機能しません。私が承認しようとしている要素をまだ消毒しています。ここに私のコードは次のとおりです。Railsサニタイズ宝石の3つの質問

def scrub(html) 
# Setup whitelist of html elements that are allowed. 
allowed_elements = ['b', 'blockquote', 'em', 'i', 'li', 'ol', 'p', 'pre', 'u', 'ul'] 
Sanitize.clean(html, :elements => allowed_elements) 
end 

が、それは結果として、次のことを示している。この単純な形式が動作していない理由について任意のポインタのための

<p> And Some Content... &lt;script&gt;mal&lt;/script&gt; 
and <em>italics and bold</em></p> 
<ol> <li> list</li> <li> list</li> </ol> 
<blockquote> <p> blockquote</p> </blockquote> 
<ul> <li> bullet</li> <li> bullet</li> </ul> 

感謝を!

答えて

4
def scrub(html) 
# Setup whitelist of html elements that are allowed. 
allowed_elements = ['b', 'blockquote', 'em', 'i', 'li', 'ol', 'p', 'pre', 'u', 'ul'] 
Sanitize.clean(html, :elements => allowed_elements).html_safe 
end 
+0

しかし、エスケープしています。実際にタグを表示するのではなく、タグを表示しています。私は誤解していますか?私は、 "allowed_elements"はビューに送ることを許可されたタグであると考えました。ビューは実際にHTMLとしてコンテンツをレンダリングしていないという問題はありますか? – panzhuli

+0

Sanitize.cleanが内容をhtml_safeとして返すことがないため、ああ、エスケープはセキュリティ対策としてRails 3によって行われていますが、私は、順序リスト、段落、斜体、太字などを参照したいと思います。変更を反映するように答えを更新しました – randomguy

+0

はい - もちろん!!!ありがとう! – panzhuli

関連する問題