2012-03-08 53 views
2

如果用戶忘記關閉html標籤,有什麼方法可以關閉嗎?例如。當用戶輸入是:Rails - 在表單中輸入html時關閉html標籤

<b>small</b><i>test 

是否有Rails的一種自動添加結束</i>標籤,讓所有以下HTML不會是斜體?

我用.html_safe來解釋所有的html,但我也想終止<i>

+0

你知道在用戶輸入中使用'.html_safe'是非常不安全的嗎?嘗試閱讀[Cross-site scripting(XSS)](http://en.wikipedia.org/wiki/Cross-site_scripting)。 – Mischa 2012-03-08 08:36:03

回答

0

Rails不能這樣對你。

你可以使用像Haml或Slim這樣的模板系統不要忘記。

你也可以用你自己的編輯器來做。

0

一個體面的做法是將輸入提供給dom解析器,然後讓解析器輸出正確的HTML。

請注意,這並非萬無一失,如果用戶犯了太多錯誤,解析器將不知道該怎麼做。

我建議Nokogiri

4

Rails的沒有任何內置的能力做到這一點,但是你有兩個選擇:

  1. 引入nokogiri - 易於安裝在幾乎所有平臺( gem install nokogiri
  2. Tidy - 第二柱具有在Linux中使用它的細節和窗戶

使用nokogori你可以簡單地做到:

html = "<b>small</b><i>test" 
clean = Nokogiri::HTML::DocumentFragment.parse(html).to_html 
# clean = "<b>small</b><i>test</i>"