答え
"!=", "!==" を使う
詳細
文字列のHTMLエスケープはRailsやRack::Utilによって
hヘルパメソッドとして提供されており、
ユーザはエスケープ処理を「hの有無」によって調整します。
|caption=例: hamlでのHTMLエスケープ
|
|コード,結果
|
|= link_to(...),<a href=...
|=h link_to(...),<a href=...
自動エスケープモード
上記のようなユーザ駆動のエスケープ処理では100%の安全性を保証できないため、
hamlでは「デフォルトでエスケープする」というオプションが存在します。
ruby>>
Haml::Template.options[:escape_html] = true
<<--
これにより常時エスケープされるようになるのですが、
今度はh の逆とも言うべき「エスケープしない」方法が必要になります。
これがずっとわからなくて困っていたのですが、
「ドキュメントを見る」という手段を思い出して解決しました。
"!=" を使えばよいようです。
|caption=例: escape_html: true
|
|コード,結果
|
|!= link_to(...),<a href=...
|= link_to(...),<a href=...
|=h link_to(...),&lt;a href=...
posted by
maiha on Mon 8 Feb 2010 at 07:55 with 2 comments
<pre>% echo '#{"<hoge>"}' | haml -e
&lt;hoge&gt;
% echo '!== #{"<hoge>"}' | haml -e
<hoge>
% echo '! #{"<hoge>"}' | haml -e
<hoge></pre>