アフィリエイト広告を利用しています

広告

posted by fanblog

Rails3 eRuby html_escape

Rails3系で database 中に入力されている html コードを表示しようした際に html 特殊文字として表示されてしまう。具体的には、タグを表示する時に括弧が &lt;, &gt; に置き換えられてしまうということ。Rails2系では、<%=h val %> の様に h を使うことで html エスケープが可能であったが Rails3系では、デフォルトでこれが効いてしまっている様子。

では、html エスケープを無効にする為にはどうしたらいいのかと調べてみたら raw を使うということがわかった。
<%= raw val %>


by Rails3 release note
7.4.3 Other Changes

* You no longer need to call h(string) to escape HTML output, it is on by default in all view templates. If you want the unescaped string, call raw(string).


by Rails3 Documentation
Public Instance methods
raw(stringish)

This method outputs without escaping a string. Since escaping tags is now default, this can be used when you don’t want Rails to automatically escape tags. This is not recommended if the data is coming from the user’s input.

For example:

<%=raw @user.name %>


この程度のことですがかなり時間を費やしてしまいました。
おかげでいろいろ勉強にもなったのでまぁいいか。。
   
×

この広告は30日以上新しい記事の更新がないブログに表示されております。