2013-04-24 24 views
0

當我進行編輯時,我的HAML表單在文本字段中呈現&ampersand;值。我已將escape_html設置爲true,但它仍然呈現&ampersand;的值我在這裏做了什麼錯誤?這是正確的語法?如何以HAML格式轉義HTML?

我的形式:

= f.text_field :display_name, escape_html => true 
+0

無論如何,文本字段值不應該被轉義 - DB值實際包含什麼?雖然對於散列鍵,它應該是一個符號。 – 2013-04-24 12:17:13

+0

在db中,所有值都包含&符號,而不是更改db中的所有值,我可以使用html_safe或escape_html嗎? – Mano 2013-04-24 12:26:19

+0

我猜可以手動設置這個值。我不知道在表單標籤中會有些東西會忽略HTML,但我並不知道很多東西。 – 2013-04-24 12:29:52

回答

-2

我認爲Ruby有一些功能.html_saferaw(),這樣當你保存它會給你乾淨的文本。

0

前言,我只是在學習haml(截至前幾個小時),但我認爲我至少有一個很好的開始的地方,因爲我認爲你的問題是你需要將它設置爲false而不是true或者你應該嘗試使用html。 我認爲你最好的選擇就是看看這一點哈姆的參考。

「Rails的XSS防護

Haml的支持Rails的XSS保護方案,這是Rails中引入2.3.5+,默認情況下在3.0.0+啓用如果它的啓用,Haml的公司:escape_html選項默認情況下設置爲true - 就像在ERB中一樣,打印到Haml模板的所有字符串都是默認轉義的,與ERB一樣,標記爲HTML安全的字符串也不會被轉義.Haml也有自己的語法,用於將原始字符串打印到模板

如果在啓用XSS保護時將escape_html選項設置爲false,則默認情況下Haml不會轉義RUBY字符串但如果標記爲H TML-safe傳遞給Haml的轉義語法,它不會被轉義。

最後,所有返回已知爲HTML安全的字符串的Haml助手都被標記爲這樣。此外,字符串輸入從http://haml.info/docs/yardoc/file.REFERENCE.html#rails_xss_protection

逃脫,除非它是HTML安全的。」

我不是專家,但是從我能理解,如果你:escape_html選項設置爲true,你永遠如果你使用的是最新版本的haml,你的默認值將設置爲true,請嘗試設置爲false,而不是

我剛發現的另一個有用的東西是unescape html。嘗試在haml前面使用!=包含您想要離開未經過消毒的html r例子 - != "I feel <strong>!"編譯成我感覺!

http://haml.info/docs/yardoc/file.REFERENCE.html#unescaping_html

我希望這有助於和對不起,如果你已經知道的東西,或者如果它不回答你問什麼。 祝你好運!