2011-01-14 7 views
3

私は最近、別の言語で書かれた古いCMSを変換するための小さなrails3アプリを作った。コンテンツを移行した後、データベースからコンテンツを出力する際に​​問題が発生しています。Rails - コンテンツの出力、サニタイズまたは<%= h?

@ content.descフィールドにはhtmlが含まれることがあります。現在、私はそれを働かせることができる唯一の方法は:

<%= sanitize content.desc %> 

これは最善の方法ですか? <%=h @content.desc %>を使用すると、まだHTMLタグが表示されます。私が<%= simple_format @content.desc %>を使用するとき、私は邪悪な間隔を得ます。

コンテンツの出力中にすべてのオプションが表示される明確なガイドがありますか?私は検索しようとしましたが、何かを上げることはできません(レールnewb、私は知っています)。

答えて

5

などsanitizehlink_toとして「安全」のRails 3にはデフォルトでHTMLエスケープされますいくつかの方法、および他の多くのヘルパーとしてマークされていない任意の文字列は、このようにそれらをできるように、安全な文字列を返します文字通り書くことができます。詳細はthis blog postを参照してください。

@content.descに含まれるHTMLが安全であることがわかっている場合は、<%= @content.desc.html_safe %>のように自分自身にマークすることができます。

0

誤っていない限り、表示する前にコンテンツをサニタイズする必要はありません。これは、Rails 3がデフォルトで行うためです。詳細:http://yehudakatz.com/2010/02/01/safebuffers-and-rails-3-0/

+3

を使用することができます。 [sanitizeは違う](http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize)。 –

+0

私は訂正しました。ありがとう! –

2

Rails 3は、デフォルトで有効になるようにHTMLサニタイズを変更しました。あなたがレンダリングしている文字列が安全であることを確認をしている場合は、それをHTML-エスケープ、それは実際にそれをサニタイズしない

<%= @content.desc.html_safe! %>

関連する問題