rails_autolinkとsimple_formatでコンテンツ内URLをリンクに変換してみた

自作のTodoAppの記事内にURLを貼ってそれをurlと認識して欲しい!!!

と思い調べると、

[Ruby][Rails]テキスト内のURLをaタグに書き換える - Qiita

ふむふむ

難しいな・・

ruby on rails - Railsでユーザーが投稿したテキストにURLがあればリンクとして表示した時のXSS対策について - スタック・オーバーフロー

gemが存在するみたい!!!
これやあああ!!!

simple_formatとrails_autolinkを掛け合わせて使うと便利 - Qiita


rails_autolink

rails_autolinkgithubは不親切設計。
-> https://github.com/tenderlove/rails_autolink

どうやら元々は標準機能だったらしい。けどちょっと前にgemとして切り離されてしょげてるみたい・・

とりあえず

gem 'rails_autolink'
bundle

それでえーーーっと

f:id:yukitoku_sw:20200130212154p:plain

説明ザツゥ・・

みたところhttpから始まる塊をURLとして認識して、aタグを付けてくれるっぽい!(知らんけど)

とりあえず真似してみる

[ 一覧ページ ]

    = auto_link(@task.description)


f:id:yukitoku_sw:20200130222351p:plain

できた


あんなザツな説明でトウシロウの私でもできた。

と思ったら

f:id:yukitoku_sw:20200130222650p:plain

URLと文字がくっついちゃってるっっっっぜ!

これは、半角スペースで直りました。 くっ付けるとダメみたい


では、なぜsimple_formatと組み合わせるのか


simple_format

これはgemとかでなく、railsのヘルパーメソッドらしいです!

公式ドキュメントはなんか入場規制かかってました。 f:id:yukitoku_sw:20200130214524p:plain


なので、とっってもわかりやすかったこの記事から少し拝借

Railsヘルパーメソッド「simple_format」の使い方 - Qiita

simple_formatの機能

  • 文字列を<p>で囲む

  • 改行には<br />を付与

  • 連続した改行については、</p><p>を付与


必要性を感じない・・・


大事なのはオプションの方っぽい!

f:id:yukitoku_sw:20200130220038p:plain

Railsヘルパーメソッド「simple_format」の使い方 - Qiita
(神記事をスクリーンショット)


ん?


こっちです!

f:id:yukitoku_sw:20200130223105p:plain

Railsヘルパーメソッド「simple_format」の使い方 - Qiita
(神記事をスクリーンショット)

最後にちょろっと書いてありました!これは超大事!!(多分)


最終的なコード

= auto_link(simple_format(h(@task.description), html: { target: '_blank' }))

別タブで開きたいなーと思ってhtml: { target: '_blank' }も付けました!

これは、なぜか機能していません!!!

link_to用のではダメなのかsimple_formatよ!


答えてくれええ!