0

編集を行うと、HAML フォーム&ampersand;がテキスト フィールドの値でレンダリングされます。私はescape_htmltrueに設定しましたが、それでも値をレンダリングします&ampersand;ここで何を間違えましたか? これは正しい構文ですか?

私のフォーム:

= f.text_field :display_name, escape_html => true
4

2 に答える 2

0

はじめに、私はちょうどhamlを学んでいます(数時間前の時点で)が、あなたの問題は、それを に設定する必要があるか、エスケープしfalseないようにする必要があることだと思うので、少なくとも開始するのに適した場所があると思いますtruehtml。あなたの最善の策は、このちょっとしたハムルのリファレンスを見ることだと思います。

"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から

すでにそのことを知っていた場合、または質問に答えていなかった場合は申し訳ありませんが、これがお役に立てば幸いです。幸運を!

于 2014-05-24T16:04:42.717 に答える