rinkuというgemを使って、ActionView 3.2で自動リンクをする。
ちなみに3.0まではActionView::Helpers::TextHelperにauto_linkっていうそのものズバリなヘルパメソッドがあったけど、3.1から削除されてしまった。一応それを切り出したrails_autolinkがあるんだけど、rinkuはCで書かれてて速いらしく、GitHubで使われているようなので、今回はこちらを使った。
Gemfile:
gem 'rinku'
hoge.html.erb:
<%= raw Rinku.auto_link(h(some_text)) %>
some_textがscriptタグを含んでいたら嫌なので、まずhでエスケープしておき、そのあとにauto_linkでURLをaタグに変換する。そしてそれを自動エスケープせずに出力したいからraw。
rawのかわりにString#html_safeを使ってみたけどうまくいかなかった。両者の違いはなんなんだろう?