Rails其實有內建轉換行的method叫simple_format,但是他會把連續兩個以上換行換成

,這有點太聰明了,又不知道有沒有其他更好的做法,所以我只好自己寫。

simple_format還可以擋javascript

在application_helper.rb

	def nl2br(html)
	 raw(h(html).gsub(/[(\n)(\r)]/, "\n" => "<br/>", "\r" => "" ))
	end
	先將內容擋掉不該有的html tag,再把\n替換成<br>,這樣子可以避免被塞入有危險性的tag,但又能放行自己的換行tag。

h <%=h “
” %> # 其實是 h(”
”) # => <br/> raw <%=raw “
” %> # 其實是 raw(”
”) # =>
.html_safe <%= “
”.html_safe %> # 跟 raw(”
”) 是一樣的 # =>

在Rails 2,預設是raw,在Rails 3剛好相反,預設是harm 也就是說: Rails 3: <%= “
” %> 擋掉html <%=raw “
” %> 直接出html

	Rails 2:
	<%=h "<br/>" %> 擋掉html
	<%= "<br/>" %> 直接出html

在Rails 3加h也是沒關係的