HTMLをプレーンテキストに変換する必要があります。 ActionViewのSanitizeHelperにはそれを行うNice関数がありますが、それを参照して単純な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に従うと、参照する場合、たとえばActionView::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 1を使用できます。
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)
質問はかなり古いですが、次のようにtest.rb
で呼び出すことができます。
ActionController::Base.helpers.strip_tags("<b>lol</b>") => "lol"
この例では:
"<p><i>example</i></p>"
これは私を助けました:
ActionView::Base.full_sanitizer.sanitize(Nokogiri::HTML(example).text)
出力:
example