`
hideto
  • 浏览: 2651872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

每天一剂Rails良药之Easy HTML Whitelists

    博客分类:
  • Ruby
阅读更多
有时候我们可能要允许用户使用某些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
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) %>
分享到:
评论
2 楼 hideto 2007-05-24  
我故意的
1 楼 zchar 2007-05-24  
when HTML:Tag应该是when HTML::Tag吧?

相关推荐

    Rails Solutions Ruby on Rails Made Easy

    Rails Solutions Ruby on Rails Made Easy

    Rails之道,完整扫描版

    《Rails之道》按照Rails的各个子系统进行组织编排,分别介绍了Rails的环境、初始过程、配置和日志记录,Rails的分配器、控制器、页面生成和路由,REST、资源和Rails,ActiveRecord的基础、关联、验证和高级技巧,...

    roadie-rails, 使HTML电子邮件适合 Rails rockstars.zip

    roadie-rails, 使HTML电子邮件适合 Rails rockstars roadie 使HTML电子邮件适合 Rails rockstars 。这里 gem 将 Rails 应用程序与Roadie钩子,以帮助你生成HTML电子邮件。安装将这个 gem 添加到你的Gemfile,

    rails API(html)

    自制 命令: rails doc cd doc rake rails:freeze:gems 或 rake rails:freeze:edge rake doc:rails 在rails_app/doc/doc/目录中就生成了一个API目录,即可

    Rails之道.pdf(最新版)

    《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容,使读者能够快速地找到对应的API文档、相关的示例代码以及深入的...

    Rails之道.pdf 高清 带书签

    Rails之道.pdf 高清 带书签

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Rails项目源代码

    一个用Ruby on Rails搭建的图片分享的网站项目.完整源代码

    Ruby-Rails实战之B2C商城开发

    Rails实战之B2C商城开发

    Rails 101S

    初学 Ruby on Rails 必备之宝典

    Ruby on Rails Tutorial

    《Ruby on Rails Tutorial》中文版(原书第2版,涵盖 Rails 4) Ruby 是一门很美的计算机语言,其设计原则就是“让编程人员快乐”。David Heinemeier Hansson 就是看重了这一点,才在开发 Rails 框架时选择了 Ruby...

    rails路由之图文解释

    让你知道在rails中如何使用路由,路由与URL是如何对应的。

    [Rails] Crafting Rails Applications (英文版)

    [Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ruby on rails 2.3.5 api html版

    ruby on rails 2.3.5 api,自己留着用的,如果有人不知道怎么生成的话可以下载我生成的这个

    Learning Rails 5(高清文字pdf版)

    If you’re a web developer or designer ready to learn Ruby on Rails, this hands-on guide is the ideal way to get started. Rather than toss you into the middle of the framework’s Model-View-Controller...

    rails敏捷开发的购物车系统

    本资源是参照rails敏捷开发第四版书中的例子,rails的版本是rails3.2.6

    Bootstrap for Rails (2015)

    Bootstrap 3 和 Rails 4(样例用的是Ruby 2.1.1,Rails 4.1.4) Table of Contents Preface 1 Chapter 1: Introducing Web Application Development in Rails 7 Why Bootstrap with Rails? 8 Setting up a Todo ...

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成.zip

    adminlte-rails, AdminLTE Rails gem 将AdminLTE主题与 Rails 资产管道集成 AdminLTE Rails gem AdminLTE 是后端的高级 Bootstrap 主题。英镑 AdminLTE Rails gem 与 Rails 资产管道集成了英镑AdminLTE主题。安装将...

Global site tag (gtag.js) - Google Analytics