rails sanitize弹出<p>标签</p>

时间:2013-12-15 18:24:05

标签: html ruby-on-rails ruby-on-rails-3 sanitize html-sanitizing

我有以下代码

<p>
  <%= sanitize "<p>This is a test</p>" %>
</p>

我预计已清理的html会显示在<p></p>之间。但它会产生。

<p>
      </p>
<p>This is a test</p> 

当我将封闭的<p></p>更改为<div></div>时,已清理的html会显示在<div></div>之间,如我所料。

为什么在<p></p>之间清理html从封闭标记中删除已清理的html并将其放在封闭标记之后?

如何让清理后的html显示在<p></p>

3 个答案:

答案 0 :(得分:1)

嵌套段落标签不合法; <p>代码只接受phrasing content tags

这就是Chrome开发工具显示更改顺序的原因 - 浏览器会尽可能纠正错误,并将内部<p>移到其旁边。

答案 1 :(得分:0)

这是HTML规范的事情。列表不应该在段落标签中。

更多相关内容 here

答案 2 :(得分:0)

清除方法未删除<p>的原因是<p>标记位于默认允许标记列表中。 完整列表是:

del, dd, h3, address, big, sub, tt, a, ul, h4, cite, dfn, h5, small, kbd, code,
b, ins, img, h6, sup, pre, strong, blockquote, acronym, dt, br, p, div, samp,
li, ol, var, em, h1, i, abbr, h2, span, hr

更多信息:http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize