前回のRails 3の話同様、Safe Buffer導入に対応するようにRails 2で使ってたHelperを書き換えてみました。
app/helpers/application_helper.rbに
module ApplicationHelper def br(str) h(str).gsub(/(\r\n?)|(\n)/, '<br />').html_safe end def rbr(str) str.gsub(/(\r\n?)|(\n)/, '<br />').html_safe end end
と書いています。
<%=br @something.text %>
とすることで元テキストのタグをエスケープして改行に変換、
<%=rbr @something.text %>
とすることで元テキストのタグをそのままHTMLタグとして反映。
最後に.html_safeとすることで自動エスケープを避けているのですが、brのほうでは手動で先にテキストだけエスケープしておくことで改行コード以外をエスケープしています。