使用 Rails,如果我有一个包含 HTML 内容的变量,我如何输出它,在我的视图文件中未编码?
这段代码,例如:
<% my_variable = "<b>Some Bolded Text</b>" %>
<%= my_variable %>
输出:
<b>Some Bolded Text</b>
使用 Rails,如果我有一个包含 HTML 内容的变量,我如何输出它,在我的视图文件中未编码?
这段代码,例如:
<% my_variable = "<b>Some Bolded Text</b>" %>
<%= my_variable %>
输出:
<b>Some Bolded Text</b>
你在使用 Rails 3 Beta 吗?默认情况下,Rails 2 不会对您的输出进行 HTML 转义,您通常必须使用h
帮助程序,请参阅 Nate 的帖子。如果您使用的是 Rails 3,您需要使用raw
帮助程序或将您的字符串设置为 html 安全。例子
<% my_variable = "<b>Some Bolded Text</b>" %>
<%= raw my_variable %>
或者
<% my_variable = "<b>Some Bolded Text</b>".html_safe %>
<%= my_variable %>
检查您的 Rails 版本并与我们联系。
ActionView::Helpers::TextHelper提供了一个方法 strip_tags,它不只是转义标签,而是完全删除它们。
来源[参考]:
def strip_tags(html)
return html if html.blank?
if html.index("<")
text = ""
tokenizer = HTML::Tokenizer.new(html)
while token = tokenizer.next
node = HTML::Node.parse(nil, 0, 0, token, false)
# result is only the content of any Text nodes
text << node.to_s if node.class == HTML::Text
end
# strip any comments, and if they have a newline at the end (ie. line with
# only a comment) strip that too
text.gsub(/<!--(.*?)-->[\n]?/m, "")
else
html # already plain text
end
end
<%= strip_tags(my_variable) %>