Rails的acts_as_taggable插件在前面
每天一剂Rails良药之Tagging一文中已经讲到
今天来看看browser_filters插件,它是三个常用的过滤器的集合:
1,UnicodeContentType,设置charset为"text/html; charset=utf-8"
2,SafariUnicodeFix,解决Safari浏览器的Ajax调用的unicde问题
3,LinkPrefetchingBlock,阻塞Google Web Accelerator或其他东西的prefetch,并返回403 Forbidden
我们可以在ApplicationController里
include BrowserFilters或者只
include UnicodeContentType, LinkPrefetchingBlock
让我们看看源码
lib/browser_filters.rb:
module BrowserFilters
def self.included(controller)
controller.send(:include, LinkPrefetchingBlock, SafariUnicodeFix, UnicodeContentType)
end
end
BrowserFilters模块简单的告诉include本身的controller去include具体三个filters
lib/link_prefetching_block.rb:
module LinkPrefetchingBlock
def self.included(controller)
controller.before_filter(:link_prefetching_block)
end
private
def link_prefetching_block
if request.env["HTTP_X_MOZ"] == "prefetch"
render :nothing => true, :status => "403 Forbidden"
return false
end
end
end
LinkPrefetchingBlock模块给include本身的controller加上link_prefetching_block这个before_filter
link_prefetching_block判断如果是GWA等的prefetch则返回403错误
lib/safari_unicode_fix.rb:
module SafariUnicodeFix
def self.included(controller)
controller.after_filter(:fix_unicode_for_safari)
end
private
def fix_unicode_for_safari
if headers["Content-Type"] == "text/html; charset=utf-8" &&
request.env['HTTP_USER_AGENT'] &&
request.env['HTTP_USER_AGENT'].include?('AppleWebKit') &&
String === response.body &&
!response.body.blank?
response.body = response.body.to_s.gsub(/([^\x00-\xa0])/u) { |s| "&#x%x;" % $1.unpack('U')[0] rescue $1 }
end
end
end
SafariUnicodeFix模块给include本身的controller加上fix_unicode_for_safari这个after_filter
lib/unicode_content_type.rb
module UnicodeContentType
def self.included(controller)
controller.after_filter(:set_content_type)
end
private
def set_content_type
headers["Content-Type"] ||= "text/html; charset=utf-8"
end
end
UnicodeContentType模块给include本身的controller加上set_content_type这个after_filter
分享到:
相关推荐
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...
"inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...
在Rails_Full_Version压缩包中,包含了完整的源代码和必要的资源文件,开发者可以通过解压并导入到Rails项目中,按照官方文档进行配置和定制。同时,这个版本可能还包含了升级记录、更改日志和可能的bug修复,以保证...
"Rails Open Flash Chart" 是一个基于Ruby on Rails框架的库,用于在Web应用程序中生成交互式的Flash图表。这个库允许开发者轻松地创建各种统计图表,如折线图、柱状图、饼图等,以便更好地可视化数据。由于Flash在...
本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...
Rails_3_Cheat_Sheets.pdf
Thinking Sphinx 是一个为 Rails 应用程序提供全文搜索功能的插件,它将数据库中的数据与 Sphinx 搜索引擎紧密结合,提供高效且高度定制化的搜索体验。 在 Rails3 中集成 Thinking Sphinx,首先你需要确保你的系统...
Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_...
rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...
《Rails Recipes with Source Code》是一本专注于Ruby on Rails框架实践技巧和源代码解析的书籍。Rails是基于Ruby语言的Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念和“开发人员的...
该模板包含的文件列表“inspinia_admin_v2.5_Rails_Full_Version”很可能包括以下组成部分: 1. **静态资源**:CSS样式文件、JavaScript脚本和图像资源。这些文件用于构建用户界面,包括响应式布局、图表、表单元素...
InspiniaAdmin 2.5 Rails_Seed_Project是一款基于Bootstrap框架的高级管理模板,专为Ruby on Rails开发者设计,旨在加速Web应用程序的开发过程。这个项目作为种子启动器,提供了完整的后台管理界面,包括丰富的UI...
Rails_Seed_Project则是Inspinia Admin在Rails环境下的一个种子项目,它的主要目的是快速搭建一个具备基本功能的后台管理系统。通过这个项目,开发者可以快速启动一个新的Rails应用,并且拥有一个预配置的后台界面,...
InspiniaAdmin 2.5 Rails_full_version