2007-05-24
每天一剂Rails良药之Easy HTML Whitelists
关键字: Rails Easy HTML Whitelists
有时候我们可能要允许用户使用某些HTML标签,但是必须禁止另外一些HTML标签
我们可以在数据库存储用户输入的内容,包括允许的HTML标签,然后显示时过滤一下
让我们来一个helper方法来过滤内容,有两种方式:
1,写在application_helper.rb里
2,写在lib目录里,然后在config/environment.rb里加上require_dependency 'rails_patch/text_helper'
我们推荐第二种方式,因为这样做与Rails程序松耦合
EasyHTMLWhitelists/lib/rails_patch/text_helper.rb
这样我们就可以在views中使用了:
我们可以在数据库存储用户输入的内容,包括允许的HTML标签,然后显示时过滤一下
让我们来一个helper方法来过滤内容,有两种方式:
1,写在application_helper.rb里
2,写在lib目录里,然后在config/environment.rb里加上require_dependency 'rails_patch/text_helper'
我们推荐第二种方式,因为这样做与Rails程序松耦合
EasyHTMLWhitelists/lib/rails_patch/text_helper.rb
module ActionView
module Helpers
module TextHelper
ALLOWED_TAGS = %w(a img) unless defined?(ALLOWED_TAGS)
def whitelist(html)
# only do this if absolutely necessary
if html.index("<")
tokenizer = HTML::Tokenizer.new(html)
new_text = ""
while token = tokenizer.next
node = HTML::Node.parse(nil, 0, 0, token, false)
new_text << case node
when HTML::Tag
if ALLOWED_TAGS.include?(node.name)
node.to_s
else
node.to_s.gsub(/</, "LT")
end
else
node.to_s.gsub(/</, "LT")
end
end
html = new_text
end
html
end
end
end
end
这样我们就可以在views中使用了:
<%= whitelist(@the_data) %>
发表评论
- 浏览: 612350 次
- 性别:

- 来自: BJ

- 详细资料
搜索本博客
我的相册
screenshot
共 1 张
共 1 张
最近加入圈子
最新评论
-
深入了解Java ClassLoader ...
当我对字节码编译不知所措的时候,发现了这个帖子 谢谢楼主,目前正在学习ASM C ...
-- by ytzhsh -
Rails里如何结合Exceptio ...
收藏了,小工具,好东西.
-- by yangzhihuan -
使用coderay和railscasts ...
不错,很爽,如果能显示成textmate那样的就好了。
-- by carlosbdw -
Axis2快速上手指南
看得很累,希望楼主写个HelloWorld.谢谢
-- by zznj1123 -
使用coderay和railscasts ...
javaeye自己用的是什么highlight什么的吗?
-- by qichunren






评论排行榜