Ruby on Rails

【Rails】文字列からHTMLタグを取り除く方法

Railsで、ブログや既存のAPIからHTMLタグ入りの文章を取得してくることがあります。
HTMLタグが含まれていると、styleに影響が出てしまったり
タグをエスケープしたりする手間が増えてしまいます。

このような時に、HTMLタグを取り除いて文字列のみを表示させる
strip_tagsというヘルパーメソッドの使い方を紹介します。

公式ドキュメントはこちら
タグを取り除く | Railsドキュメント

結論

  1. view_helperで使う場合
html = '<p>ミミッキュのいる生活</p>'
strip_tags(html)
=> 'ミミッキュのいる生活'

2. controllerで使う場合

html = '<p>ミミッキュのいる生活</p>'

# helperメソッドなので、ApplicationController.helpersから呼び出す
ApplicationController.helpers.strip_tags(html)
=> 'ミミッキュのいる生活'

目次

  1. 結論
  2. 環境
  3. viewで使う場合
    1. view_helperでもそのまま使える
  4. controllerでも使いたい
  5. まとめ

環境

OS: MacOS
メモリ: 32GB

Dependents
Rails6
Ruby 2.6
CentOS7 on Vagrant
Mysql 5.7

viewで使う場合

view側でタグを取り除きたい場合は簡単です。
普通にstrip_tagsを呼び出しましょう。引数に、タグを取り除きたい文字列を指定します。

<% html = '<p>ミミッキュのいる生活</p>' %>
<%= strip_tags(html) %>

view_helperでもそのまま使える

strip_tagsは、ヘルパーメソッドなので
application_helper.rbなどのview_helperの中でも、そのまま呼び出すことができます。

# application_helper.rb

module ApplicationHelper
  def strip_html_tags(html)
    truncate(strip_tags(html), length: 100, omission: '・・・')
  end
end

上のコードは、受け取ったhtmlをタグを取り除き、先頭100文字のみを返すサンプルです。
truncateもまた、helperメソッドなので、helper内でそのまま呼び出すことができます。

controllerでも使いたい

strip_tagsをcontrollerで呼び出したい時もあると思います。
そういった場合、ApplicationController.helpers を使って、strip_tagsを呼び出すことができます。

html = '<p>ミミッキュのいる生活</p>'

# helperメソッドなので、ApplicationController.helpersから呼び出す
result = ApplicationController.helpers.strip_tags(html)

puts result
=> 'ミミッキュのいる生活'

他のhelperメソッドについても同様に呼び出せますので、覚えておきたいですね!

まとめ

今回は、文字列からHTMLタグを取り除くstrip_tagsメソッドについて紹介しました。

helperメソッドは、比較的使用頻度も高いメソッドですが、
contorllerで使いたくなった時に、どうやって呼び出すんだっけ?と、ついつい忘れがちなので気をつけたいです。

また、HTMLタグ意外にも、リンクを取り除いたり文字を切り取ったり
便利なメソッドが揃っているので、これからも少しずつ紹介できればと思います。

また、他にもrailsで使うメソッドの紹介記事を書いていますので
そちらも見ていただければ幸いです!

ピックアップ記事

  1. 【Rails】modelを作成する
  2. 【Blender】拡張機能(アドオン)の基本的な使い方
  3. 【Blender】zip版のBlenderをBlender Launcherに移…
  4. 【Blender】レンダリング結果を新規ウィンドウで開かないようにする
  5. 【UE4】用語備忘録メモ

関連記事

 
  1. 【Rails】オブジェクトの中身をログに出力する

    Ruby on Rails

    【Rails】オブジェクトの中身をログに出力する

    オブジェクトの中身をデバッグしたりする時に便利出力結果をみやすい形に…

  2. Ruby on Rails

    【Rails】development? production? 開発環境ごとに処理を切り分けたい時

    Railsで、開発環境ごとに処理を切り替えたい時の方法を紹介します。ま…

  3. Ruby on Rails

    【Rails】modelを作成する

    結論rails generateコマンドを使いましょ…

  4. Ruby on Rails

    【Rails】migrationでカラムを追加・削除したい

    migrationファイルでよく使う記述。テーブルにカラムを追加・削…

  5. Ruby on Rails

    【Rails】Factory already registered: エラー

    railsでアプリ開発中、最新のfeatureブランチでリベースして…

  6. railsをproductionモードで実行する

    Ruby on Rails

    【Rails】railsをproductionモードで実行する

    結論--environmentオプションを使用します。…

カレンダー

2024年4月
1234567
891011121314
15161718192021
22232425262728
2930  

最近の記事

  1. Blender

    【Blender】レンダリング結果を新規ウィンドウで開かないようにする
  2. Blender

    起動時の設定をカスタムする【Blender】
  3. Blender

    【Blender】アニメーションでポーズを左右反転してコピペしたい時
  4. Blender

    【Blender】MMDファイルをBlenderにImportするアドオン
  5. WordPress

    【WPテーマ自作】UnderScoresの導入
PAGE TOP