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<br/><b>there</b><i>italic</i><br/>Newline
作为我的实际输出。
我正在寻找的是(在浏览器中可以看到)
Hi
<b>there</b>
<i>italic</i>
Newline
我将如何部分转义(我只想替换换行符,但我想转义的所有其他 html)
【问题讨论】:
先转义,再添加换行符? 有转义函数吗? 你试过了吗simple_format
api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html
【参考方案1】:
首先将&lt;
替换为&lt;
以转义现有的HTML,然后将\n
替换为<br />
,就像您当前所做的那样。
【讨论】:
这对所有其他字符仍然安全吗? 如果没有&lt;
,就不可能解析HTML(假设您没有将其转储到属性或<script>
块中),因此您需要做的就是使其惰性化。也就是说,如果您还希望实体保持原样,您还应该将 &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