ruby-on-rails - 从 rails 中的属性中删除所有 html 标签

标签 ruby-on-rails regex

我有一个项目模型,它有一些文本属性,一个是摘要。我有一些项目在摘要中包含 html 标签,我想将其转换为纯文本。我有这个方法,它有一个正则表达式,可以删除所有的 html 标签。

def strip_html_comments_on_data
  self.attributes.each{|key,value| value.to_s.gsub!(/(<[^>]+>|&nbsp;|\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/

相关文章:

ruby-on-rails - 如何使用 rspec 测试 Cloudinary rails 和 Attachinary?

ruby-on-rails - 从我的 Rails 应用程序登录到另一个应用程序

python正则表达式以跳过模式拆分某些模式

javascript - 序列号的正则表达式

html - rails : Image as a link

ruby-on-rails - iframe 导致无法验证 Rails 中的 CSRF token 真实性

如果代码存在,则正则表达式抓取文本

regex - 无法理解 !~ 在正则表达式中

python - 被正则表达式难住了

ruby-on-rails - 使用 Net::HTTP 向 HTTPS 发送请求