我实际上是使用正则表达式来解决这个问题,但我想知道是否有更容易解决它,因为如果我涵盖了所有可能的规则,我对我的正则表达式没有信心。我的问题是我想在文本周围放置双引号(“)并打印它。在数据库中检索时,文本有html标签。
让我说我正在研究这个问题,
@text = `<p>my <strong>legs <em>wants</em> </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> </strong>ex <strong>desire</strong> blood sleep</p>"
有什么想法吗?所有我想打印的都是"my legs wants ex desire blood sleep"
字面意思
更新
使用strip_tags很酷,我觉得它让我更接近答案,但遗憾的是strip_tags在我的控制器/普通红宝石中不起作用。我还在研究。
答案 0 :(得分:1)
我想你想要docs
中的strip_tags
<%= "\"#{strip_tags(@text)}\"" %>
编辑:
Uglier,但也摆脱了&amp; nbsp。
<%= "\"#{strip_tags(@text.gsub(" ", "")}\"" %>
答案 1 :(得分:1)
require 'nokogiri'
doc = Nokogiri('<p>my <strong>legs <em>wants</em> </strong>ex <strong>desire</strong> blood sleep</p>'.gsub(' ', ' '))
# use Nokogiri to get plain text
# output it
= "\"#{doc.text.squeeze}\""
答案 2 :(得分:0)
尝试.strip
:
<%= "\"#{@text.html_safe.strip}\"" %>