san*_*eme 23 html ruby tags strip actionview
我需要将HTML转换为纯文本.在ActionView的SanitizeHelper中有一个很好的功能,但我无法理解如何引用它并在一个简单的test.rb文件中使用它.
http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html
我想能打电话 strip_tags("<b>lol</b>") => "lol"
san*_*xus 31
问题很古老,但我最近遇到了同样的问题.我找到了一个简单的解决方案:宝石消毒.它很轻,工作正常,如果你需要它还有其他选择.
Sanitize.clean("<b>lol</b>") #=> "lol"
Run Code Online (Sandbox Code Playgroud)
Joh*_*ohn 25
ActiveSupport是唯一支持挑选单个组件的Rails框架.其他框架(包括ActionView)必须是必需的:
require 'action_view'
Run Code Online (Sandbox Code Playgroud)
请注意,此要求不一定会加载所有ActionView.除非线程安全要求自动加载发生急切,否则它只会设置自动加载并需要常见的依赖关系.这意味着遵循要求,如果您参考,例如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
Run Code Online (Sandbox Code Playgroud)
这没有详细记录; 我的回答主要基于对这个问题的讨论.
khe*_*lll 15
我相信这应该足够了:
"<b>lol</b>".gsub(/<[^>]*>/ui,'') #=> lol
Run Code Online (Sandbox Code Playgroud)
您也可以使用Nokogiri:
require 'rubygems'
require 'nokogiri'
doc = Nokogiri::HTML("<b>lol</b>")
doc.text #=> "lol"
Run Code Online (Sandbox Code Playgroud)
您仍然可以通过执行以下操作来使用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
Run Code Online (Sandbox Code Playgroud)
Mal*_*zad 12
如果您不经常使用它,那么您可以使用:
ActionView::Base.full_sanitizer.sanitize(your_html_string)
Run Code Online (Sandbox Code Playgroud)
否则你可以在test_helper.rb文件中定义一个方法,如:
def strip_html_tags(string)
ActionView::Base.full_sanitizer.sanitize(string)
end
Run Code Online (Sandbox Code Playgroud)
然后在test.rb文件中,使用如下:
strip_html_tags(your_html_string)
Run Code Online (Sandbox Code Playgroud)
这个问题很老了,但你可以这样称呼它test.rb
:
ActionController::Base.helpers.strip_tags("<b>lol</b>") => "lol"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19441 次 |
最近记录: |