12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Ruby】テキスト内のURLを自動でリンクにしてくれるgem rinkuの導入と使い方【auto_linkの20倍早い】

Posted at

はじめに

Railsアプリで以下のような文字列中にあるリンクを
文字列のままではなく自動でリンクに変換しクリックで画面遷移できる様にさせたいと思いました。
※ Railsのsimple_formatメソッドを使用してます。

simple_formatのリファレンス:http://railsdoc.com/references/simple_format

sample/test.html.erb

<% 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を追加

sample/test.html.erb

<% 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)) %>
12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?