編集を行うと、HAML フォーム&ersand;
がテキスト フィールドの値でレンダリングされます。私はescape_html
trueに設定しましたが、それでも値をレンダリングします&ersand;
ここで何を間違えましたか? これは正しい構文ですか?
私のフォーム:
= f.text_field :display_name, escape_html => true
編集を行うと、HAML フォーム&ersand;
がテキスト フィールドの値でレンダリングされます。私はescape_html
trueに設定しましたが、それでも値をレンダリングします&ersand;
ここで何を間違えましたか? これは正しい構文ですか?
私のフォーム:
= f.text_field :display_name, escape_html => true
はじめに、私はちょうどhamlを学んでいます(数時間前の時点で)が、あなたの問題は、それを に設定する必要があるか、エスケープしfalse
ないようにする必要があることだと思うので、少なくとも開始するのに適した場所があると思いますtrue
html。あなたの最善の策は、このちょっとしたハムルのリファレンスを見ることだと思います。
"Rails XSS 保護
Haml は、Rails 2.3.5+ で導入され、3.0.0+ でデフォルトで有効になっている Rails の XSS 保護スキームをサポートしています。有効にすると、Haml の :escape_html オプションがデフォルトで true に設定されます。ERB と同様に、Haml テンプレートに出力されるすべての文字列はデフォルトでエスケープされます。また、ERB と同様に、HTML セーフとしてマークされた文字列はエスケープされません。Haml には、生の文字列をテンプレートに出力するための独自の構文もあります。
XSS 保護が有効なときに :escape_html オプションが false に設定されている場合、Haml はデフォルトで RUBY 文字列をエスケープしません。ただし、HTML セーフとマークされた文字列が Haml のエスケープ構文に渡された場合、エスケープされません。
最後に、HTML セーフであることがわかっている文字列を返すすべての Haml ヘルパーは、そのようにマークされています。さらに、HTML セーフでない限り、文字列入力はエスケープされます。」
http://haml.info/docs/yardoc/file.REFERENCE.html#rails_xss_protectionから
私は専門家ではありませんが、理解できることから、:escape_html
オプションをtrue
に設定すると、常にサニタイズされた html が返されます。最新バージョンの haml を使用している場合、デフォルトは true に設定されます。false
代わりに、に設定してみてください。
私が見つけたもう 1 つの便利な方法は、html をエスケープ解除することです。サニタイズせずに残したい html を含む haml の前に != を使用してみてください。たとえば!= "I feel <strong>!"
、I feel ! にコンパイルされます。
http://haml.info/docs/yardoc/file.REFERENCE.html#unescaping_htmlから
すでにそのことを知っていた場合、または質問に答えていなかった場合は申し訳ありませんが、これがお役に立てば幸いです。幸運を!