我有一个项目模型,它有一些文本属性,一个是摘要。我有一些项目在摘要中包含 html 标签,我想将其转换为纯文本。我有这个方法,它有一个正则表达式,可以删除所有的 html 标签。
def strip_html_comments_on_data
self.attributes.each{|key,value| value.to_s.gsub!(/(<[^>]+>| |\r|\n)/,"")}
end
我也有一个 before_save 过滤器
before_save :strip_html_comments_on_data
问题是保存项目后html标签仍然存在。我错过了什么?
而且,是否有一种非常简单的方法可以在所有模型中调用该方法?
谢谢,
尼古拉斯·霍克·伊萨扎
最佳答案
未经测试
include ActionView::Helpers::SanitizeHelper
def foo
sanitized_output = sanitize(html_input)
end
其中 html_input 是一个包含 HTML 标签的字符串。
编辑
您可以通过传递
:tags=>[]
去除所有标签作为一个选项:plain_text = sanitize(html_input, :tags=>[])
虽然阅读了docs我看到有一个更好的方法:
plain_text = strip_tags(html_input)
然后按照 smotchkiss 把它变成一个前置过滤器你可以走了。
关于ruby-on-rails - 从 rails 中的属性中删除所有 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576394/