ruby on rails如何逃避html标签

时间:2013-11-05 20:32:24

标签: ruby-on-rails ruby regex

我实际上是使用正则表达式来解决这个问题,但我想知道是否有更容易解决它,因为如果我涵盖了所有可能的规则,我对我的正则表达式没有信心。我的问题是我想在文本周围放置双引号(“)并打印它。在数据库中检索时,文本有html标签。

让我说我正在研究这个问题,

@text = `<p>my <strong>legs <em>wants</em>&nbsp;</strong>ex <strong>desire</strong> blood sleep</p>` 

当我在我的视图中尝试<%= raw "\"#{@text.html_safe}\"" %>时,我将其作为输出:

"
my legs wants ex desire blood sleep

"

当我做<%= "\"#{@text.html_safe}\"" %>之类的事情时,输出是:

"<p>my <strong>legs <em>wants</em>&nbsp;</strong>ex <strong>desire</strong> blood sleep</p>"

有什么想法吗?所有我想打印的都是"my legs wants ex desire blood sleep"字面意思

更新

使用strip_tags很酷,我觉得它让我更接近答案,但遗憾的是strip_tags在我的控制器/普通红宝石中不起作用。我还在研究。

3 个答案:

答案 0 :(得分:1)

我想你想要docs

中的strip_tags
<%= "\"#{strip_tags(@text)}\"" %>

编辑:

Uglier,但也摆脱了&amp; nbsp。

<%= "\"#{strip_tags(@text.gsub("&nbsp;", "")}\"" %>

答案 1 :(得分:1)

require 'nokogiri'
doc = Nokogiri('<p>my <strong>legs <em>wants</em>&nbsp;</strong>ex <strong>desire</strong>     blood sleep</p>'.gsub('&nbsp;', ' '))

# use Nokogiri to get plain text

# output it
= "\"#{doc.text.squeeze}\""

答案 2 :(得分:0)

尝试.strip

<%= "\"#{@text.html_safe.strip}\"" %>