はじめに
Railsアプリで以下のような文字列中にあるリンクを
文字列のままではなく自動でリンクに変換しクリックで画面遷移できる様にさせたいと思いました。
※ Railsのsimple_format
メソッドを使用してます。
simple_format
のリファレンス:http://railsdoc.com/references/simple_format
<% text = <<EOL
テキスト
あああhttps://www.google.co.jp/
テキストテキスト
EOL %>
<%= simple_format(text) %>
# ↓出力
# <p>テキスト</p>
# <p>あああhttps://www.google.co.jp/</p>
# <p>テキストテキスト</p>
rinku とは
rinku
は自動リンクを行うRubyのgemです。
同様のgemにrails_auto_link
があります。テキストを解析してリンクに似ているものはすべてHTMLリンクに変換します。
rinkuはC言語で記述されているのでauto_linkより約20倍高速とのことなので、自動リンクを実装したい場合はrails_auto_link
よりrinku
を使うほうが良さそうです。
rinku の使い方
公式ドキュメントはこちら → https://github.com/vmg/rinku
1、 gemをインストールします
gem install rinku
2、 Gemfileに記述します。
gem 'rinku'
3、 bundle install
を実行します。
bundle install
4、 simple_format
の行にRinku.auto_link
を追加
<% text = <<EOL
テキスト
あああhttps://www.google.co.jp/
テキストテキスト
EOL %>
<%= Rinku.auto_link(simple_format(text)) %> # ここを修正
# ↓出力
# <p>テキスト</p>
# <p>あああ<a href="https://www.google.co.jp/">https://www.google.co.jp/</a></p>
# <p>テキストテキスト</p>
その他
こちらの記事にある通り
https://qiita.com/ikm/items/a5f1c6c20f858a175a84
文字列を自動エスケープさせていた場合raw
をつける
<%= raw Rinku.auto_link(h(text)) %>