数据库中插入一条这样的数据:
books
|id|content| |---|---| |1|</table>|
这样读出来后,在视图曾这样写的时候:
<%= raw book.content %>
就破坏了原来的表格,但还是想把内容直观显示出来,怎么办?
<pre><%= book.content %></pre>
require 'nokogiri' doc = Nokogiri::HTML::DocumentFragment.parse '<p>text></p></table>' doc.to_s # => "<p>text></p>"
另外,raw 是个安全漏洞 https://ruby-china.org/topics/16633
#1 楼 @luikore 不行,这样把数据直接显示出来了,其他记录比如
还是想显示出图片。
#2 楼 @Rei 非常感谢。想想这里要过滤个字段都要用到 nokogiri, 是不是大材小用了?
nokogiri
看了你的帖子,试了下 sanitize 这个方法,基本达到了效果,但“消毒”消得把一些字体颜色消掉了,可以忍受。
sanitize
#4 楼 @newbie sanitize 是基于标签名的简单过滤,对结构不纠正,如果有 "
test" 这样的字符串是无视的。
我不觉得是大材小用,工具就是拿来用的,nokogiri 在同类工具中是性能比较好的,另外处理结构要缓存起来避免重复计算。
#6 楼 @Rei 好吧,我将要尝试一下,谢谢你。
建议存数据库之前把这个格式检查好再存,这样取的时候就不用这么麻烦了。
我看 basecamp 是用这个 http://xing.github.io/wysihtml5/
hehe
http://baidu.com