Rails 部分 html 转义

Posted

技术标签:

【中文标题】Rails 部分 html 转义【英文标题】:Rails partial html escape 【发布时间】:2012-08-05 19:03:14 【问题描述】:

我试图在 rails 中转义一些文本,但我想用 html 换行符替换换行符:

text = "Hi\n<b>there</b><i>italic</i>\nNewline"

我只是使用

<%=text.gsub(/\n/, "<br/>") %>

但这会给我Hi&lt;br/&gt;&lt;b&gt;there&lt;/b&gt;&lt;i&gt;italic&lt;/i&gt;&lt;br/&gt;Newline 作为我的实际输出。

我正在寻找的是(在浏览器中可以看到)

Hi
<b>there</b>
<i>italic</i>
Newline

我将如何部分转义(我只想替换换行符,但我想转义的所有其他 html)

【问题讨论】:

先转义,再添加换行符? 有转义函数吗? 你试过了吗simple_formatapi.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html 【参考方案1】:

首先将&amp;lt; 替换为&amp;lt; 以转义现有的HTML,然后将\n 替换为&lt;br /&gt;,就像您当前所做的那样。

【讨论】:

这对所有其他字符仍然安全吗? 如果没有&amp;lt;,就不可能解析HTML(假设您没有将其转储到属性或&lt;script&gt; 块中),因此您需要做的就是使其惰性化。也就是说,如果您还希望实体保持原样,您还应该将 &amp;amp; 替换为 &amp;amp;【参考方案2】:

我认为你需要在这里使用 HTML pre 标签..

这应该显示您所要求的任何内容..

text = "<pre>Hi\n<b>there</b><i>italic</i>\nNewline</pre>"
<%= text %>

【讨论】:

以上是关于Rails 部分 html 转义的主要内容,如果未能解决你的问题,请参考以下文章

用作 JSON 时,rails 3 转义的 html 标签在浏览器中未转义

找到在 Rails 部分和布局中定义 html 的一部分的最简单方法是啥?

通过渲染 Rails 部分创建 jquery html 对象

rails 3 - 在javascript响应中转义部分生成的html

Rails:重构 HTML 生成辅助方法以使用部分 - 如何在那里使用块?

Rails 如何转义和显示渲染视图的内容