从rails中的属性中删除所有html标记

Hoc*_*ock 12 regex ruby-on-rails

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

def strip_html_comments_on_data
  self.attributes.each{|key,value| value.to_s.gsub!(/(<[^>]+>|&nbsp;|\r|\n)/,"")}
end
Run Code Online (Sandbox Code Playgroud)

我也有一个before_save过滤器

before_save :strip_html_comments_on_data
Run Code Online (Sandbox Code Playgroud)

问题是保存项目后html标签仍然存在.我错过了什么?

并且,有一种非常简单的方法可以在所有模型中调用该方法吗?

谢谢,

NicolásHockIsaza

zet*_*tic 45

未经测试

include ActionView::Helpers::SanitizeHelper

def foo
  sanitized_output = sanitize(html_input)
end
Run Code Online (Sandbox Code Playgroud)

其中html_input是包含HTML标记的字符串.

编辑

您可以通过:tags=>[]作为选项传递来剥离所有标记:

plain_text = sanitize(html_input, :tags=>[])

虽然阅读文档我看到有一个更好的方法:

plain_text = strip_tags(html_input)

然后按照每个smotchkiss进入一个前过滤器,你很高兴去.

  • strip_tags不会删除和 (7认同)

wan*_*lke 10

最好不要在模型中包含视图助手.只需使用:

HTML::FullSanitizer.new.sanitize(text)
Run Code Online (Sandbox Code Playgroud)