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
分享到:
相关推荐
复杂Rails系统架构优化
中文世界唯一一本Rails 4.0.0 + Ruby 2.0.0 的自學書籍
InspiniaAdmin 2.6.1 Rails_Full_Version
RestFul_Rails_Dev_v_0.1 RestFul_Rails_Dev_v_0.1
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之前必须...
agile_web_development_with_rails_3rd_edition.9994652073.pdf
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 2.5 中的 Rails_Full_Version
Rails_Recipes_with_Source_Code
Rails_3_Cheat_Sheets.pdf
应用Rails进行REST 开发 ,翻译自《RESTful Rails Development》
NULL 博文链接:https://zyn-zyn.iteye.com/blog/1163148
ruby_on_rails_3_入门教程(中文)
rails_best_practices rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices...
InspiniaAdmin 2.5 Rails_Seed_Project
InspiniaAdmin 2.5 Rails_full_version
rails_plugins_presentation
gem 'rails_admin_image_manager' 跑步 $ bundle install 安装RailsAdmin_ImageManager $ rails generate rails_admin_image_manager:install 将上传文件路径添加到您的.gitignore文件中 /public/rails_admin_...