原创作者: hideto
阅读:964次
评论:0条
更新时间:2011-05-26
有时候我们可能要允许用户使用某些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) %>
评论 共 0 条 请登录后发表评论