3
7

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.

【Rails】Rinkuを使い、URLを検出して<a>タグを自動的に適応させる方法

Last updated at Posted at 2018-12-03

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/

3
7
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
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?