4

我有这个 html 文本:

<p> I'm a html &nbsp; text</p>

为了在我的网页上显示它,我首先对其进行消毒并删除标签:

sanitize(best_practice.milestone.description, :tags=>[])

然后我显示确定,&nbsp;已删除。

但是,如果我决定像这样截断文本:

sanitize(best_practice.milestone.description, :tags=>[]).truncate(30)

在我的&nbsp;网页上再次可见。所有特殊字符实际上都是可见的。

我该怎么做才能避免截断以使这些特殊字符可见?

4

1 回答 1

11

处理清理助手和截断可能很棘手。有很多不同的清理助手:h、CGI::escapeHTML、sanitize、strip_tags、html_safe 等。如果字符串在开始标签和结束标签之间或正好在中间被截断,则清理和截断不能很好地协同工作一个特殊的 HTML 字符。

以下语句似乎有效

sanitize(text, :tags=>[]).truncate(30, :separator => " ").html_safe

诀窍是传递一个 :separator 选项以在自然中断处截断文本。

于 2012-12-12T14:30:47.010 回答