URLを検出してaタグを自動的に適応させたくて色々探していたところ、LinkuというGemを見つけました。
これを使えば、安全なURL、emailなどにlinkを埋め込んでくれます。
C言語で書かれているらしく、どうやら高速らしい。
早速使って見ましょう。
github→ https://github.com/vmg/rinku
##Rinkuのinstall
Gemfileにrinku
を追加。
gem 'rinku'
bundle install
##使い方
<%= raw Rinku.auto_link(h(変数)) %>
これでURLを検知して自動的にaタグで囲んでくれます。
しかし、これでは外部リンクにできません。
もし外部リンクにしたいのであれば、以下のようにすると良いでしょう。
Rinku.auto_link(text, :all, 'target="_blank"')
text・・・ 文字列かhtmlが入り、自動的にhtmlに変換されます。すでにaタグが適応されてあれば、そのままaタグになります。
mode ・・・ どのformatをlinkにするか指定します。 :all, :urls、 :email_dressのどれかをlinkに変えます。
targetを指定すれば外部リンクにすることができます。文字列でしか渡せない仕様になっていたため、くれぐれもtarget: "_blank"
とハッシュを渡さないようにしましょう。
##実際の例
= Rink.auto_link("http://www.hoge.com", :all, 'target="_blank"')
とした場合、以下のように出力されます。
# <a href="http://www.hoge.com" target="_blank">http://www.hoge.com</a>
しかし、railsで使うと画面上では文字列として表示されてしまうことがあるため、もしその場合はエスケープしないようにしてあげる必要があります。
/このうちのどれか
= Rink.auto_link("http://www.hoge.com", :all, 'target="_blank"').html_safe
= raw Rink.auto_link("http://www.hoge.com", :all,'target="_blank"')
== Rink.auto_link("http://www.hoge.com", :all, 'target="_blank"')
こちらの記事を参考にさせていただきました。
https://freesworder.net/rails-link-a/