HTML をプレーンテキストに変換する必要があります。ActionView の SanitizeHelper にはそれを行う優れた関数がありますが、それを参照して単純な test.rb ファイルで使用する方法を理解するのに苦労しています。
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
通話できるようにしたいstrip_tags("<b>lol</b>") => "lol"
HTML をプレーンテキストに変換する必要があります。ActionView の SanitizeHelper にはそれを行う優れた関数がありますが、それを参照して単純な test.rb ファイルで使用する方法を理解するのに苦労しています。
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
通話できるようにしたいstrip_tags("<b>lol</b>") => "lol"
質問はかなり古いですが、最近同じ問題がありました。簡単な解決策を見つけました: gem Sanitize。軽量で、正常に動作し、必要に応じて追加のオプションがあります。
Sanitize.clean("<b>lol</b>") #=> "lol"
ActiveSupport は、厳選された個々のコンポーネントをサポートする唯一の Rails フレームワークです。ActionView を含む他のフレームワークは、まとめて必要です。
require 'action_view'
このrequireは必ずしもActionViewのすべてをロードするわけではないことに注意してください。スレッド セーフが自動ロードの積極的な発生を必要とする状況を除いて、自動ロードをセットアップし、共通の依存関係を必要とするだけです。つまり、require に続いて、例えば を参照すると、requireActionView::Helpers::SanitizeHelper
が発生action_view/helpers /sanitize_helper.rb
するということです。
したがって、ActionView を使用して目的を達成するための正しい、サポートされている方法は次のとおりです。
require 'action_view'
class Test < Test::Unit::TestCase # or whatever
include ActionView::Helpers::SanitizeHelper
def my_test
assert_equal "lol", strip_tags("<b>lol</b>")
end
end
これは十分に文書化されていません。この回答は、主にこの問題に関する議論に基づいています。
これで十分だと思います:
"<b>lol</b>".gsub(/<[^>]*>/ui,'') #=> lol
Nokogiri も使用できます。
require 'rubygems'
require 'nokogiri'
doc = Nokogiri::HTML("<b>lol</b>")
doc.text #=> "lol"
次のようなことを行うことで、Rails を使用できます。
require 'rubygems'
require 'action_view'
class Foo
include ActionView::Helpers::SanitizeHelper
def test
strip_tags("<b>lol</b>")
end
end
f = Foo.new
puts f.test #=> lol
あまり頻繁に使用しない場合は、次を使用できます。
ActionView::Base.full_sanitizer.sanitize(your_html_string)
それ以外の場合は、次のように test_helper.rb ファイルでメソッドを定義できます。
def strip_html_tags(string)
ActionView::Base.full_sanitizer.sanitize(string)
end
次に、test.rb ファイルで、次のように使用します。
strip_html_tags(your_html_string)
理想的には、require して含める必要がありますActionView::Helpers::SanitizeHelper
が、その場合に含まれない依存関係がいくつかあります。を使用できるようにするために、それらを自分で要求できますstrip_tags
。
require 'erb'
require 'active_support'
require 'active_support/core_ext/class/attribute_accessors'
require 'active_support/core_ext/string/encoding'
require 'action_view/helpers/capture_helper'
require 'action_view/helpers/sanitize_helper'
include ActionView::Helpers::SanitizeHelper
strip_tags("<b>lol</b>") # => "lol"
これは、Rails 3 gem がインストールされていることを前提としています。
HTML::FullSanitizer.new.sanitize('<b>lol</b>') # => "lol"