rails truncate方法添加特殊字符

nde*_*eau 4 truncate ruby-on-rails special-characters sanitize

我有这个HTML文字:

<p> I'm a html &nbsp; text</p>
Run Code Online (Sandbox Code Playgroud)

要在我的网页上显示它,我首先清理它并删除标签:

sanitize(best_practice.milestone.description, :tags=>[])
Run Code Online (Sandbox Code Playgroud)

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

但如果我决定截断这样的文字:

sanitize(best_practice.milestone.description, :tags=>[]).truncate(30)
Run Code Online (Sandbox Code Playgroud)

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

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

0x4*_*672 11

处理消毒助手和截断可能会很棘手.有许多不同的清理帮助程序:h,CGI :: escapeHTML,sanitize,strip_tags,html_safe等.如果字符串在开始和结束标记之间被截断或在中间正确,则清除和截断不能很好地协同工作一个特殊的HTML字符.

以下陈述似乎有效

sanitize(text, :tags=>[]).truncate(30, :separator => " ").html_safe
Run Code Online (Sandbox Code Playgroud)

诀窍是传递一个:separator选项来截断自然中断的文本.