`
qqdenghaigui
  • 浏览: 120919 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ruby on rails :Filters

 
阅读更多

可將Controller中重复的代码抽出來,有三种方法可以定义在进入Action之前、之中或之后執行特定方法,分別是before_filterafter_filteraround_filter,其中before_filter最為常用。这三个方法可以接受Code block、一个Symbol方法名称或是一个类。

 

 

before_filter

before_filter最常用用于跨Action共用的方法,或是使用者权限验证等等:

 

class EventsControler < ApplicationController
  before_filter :find_event, :only => :show

  def show
  end

  protected

  def find_event
    @event = Event.find(params[:id])
  end
  
end

 每一个都可以搭配:only:except参数。

 

 

around_filter

 

# app/controllers/benchmark_filter.rb
class BenchmarkFilter
    def self.filter(controller)
     timer = Time.now
     Rails.logger.debug "---#{controller.controller_name} #{controller.action_name}"
     yield # 这里让出來执行Action动作
     elapsed_time = Time.now - timer
     Rails.logger.debug "---#{controller.controller_name} #{controller.action_name} finished in %0.3s" % elapsed_time
    end
end

# app/controller/events_controller.rb
class EventsControler < ApplicationController
    around_filter BenchmarkFilter
end
 

Filter的順序

 

當有多個Filter時,Rails是由上往下依序執行的。如果需要加到第一個執行,可以使用prepend_before_filter方法,同理也有prepend_after_filterprepend_around_filter

如果需要取消從父類別繼承過來的Filter,可以使用skip_before_filter :filter_method_name方法,同理也有skip_after_filterskip_around_filter

分享到:
评论

相关推荐

    Beginning Ruby on Rails

    Ruby on Rails is the revolutionary online programming tool that makes creating functional e-commerce web sites faster and easier than ever. With the intuitive, straightforward nature of Ruby and the ...

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加简洁高效。本教程将引导初学者进入Rails的世界,通过实例来深入理解其...

    flex on rails

    The title "Flex on Rails" suggests an in-depth exploration of integrating Adobe Flex with Ruby on Rails (RoR), focusing specifically on Flex 3 and Rails 2. This integration allows for the creation of ...

    rails-chm-2-0-2.rar

    Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它基于MVC(模型-视图-控制器)架构模式,用于快速开发动态网站。Rails以其“约定优于配置”(Convention Over ...

    Rails_Recipes_with_Source_Code

    《Rails Recipes with Source Code》是一本专注于Ruby on Rails框架实践技巧和源代码解析的书籍。Rails是基于Ruby语言的Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念和“开发人员的...

    ruby cookbook

    &lt;br&gt; &lt;br&gt;Strings and numbers &lt;br&gt;Arrays and hashes &lt;br&gt;Classes, modules, and namespaces &lt;br&gt;Reflection and metaprogramming &lt;br&gt;XML and HTML processing&lt;br&gt;&lt;br&gt;Ruby on Rails ...

    ASP.NET MVC in Action

    - **Comparison with Other Frameworks:** To provide context and broaden the reader's perspective, the book compares ASP.NET MVC with other popular frameworks like MonoRail and Ruby on Rails....

    sift:轻松在Rails控制器中添加过滤

    ApplicationController include Sift filter_on :title , type : :string def index render json : filtrate ( Post . all ) endend 这将允许用户通过?filters[title]=foo并获得Post标题为小号foo 。 Sift还将使用...

    streamdeck-hold-to-toggle-obs-filters:一个 Streamdeck 插件,用于在保持时切换过滤器启用状态并在释放时恢复

    这个项目是用引导的。...Ruby on Rails 在开发中代理 API 请求 配置代理后出现“无效的主机头”错误 手动配置代理 配置 WebSocket 代理 在开发中使用 HTTPS 在服务器上生成动态&lt;meta&gt;标签 预渲染成静态

    Python库 | jinja2-dev-server-0.0.2b17.tar.gz

    Jinja2是基于ERB(Ruby on Rails中的模板引擎)和Mako模板语言的设计理念创建的,它具有高度的灵活性和可扩展性,同时提供了模板继承、宏、过滤器、表达式等丰富的特性。 **模板引擎的作用** 在Web开发中,模板...

    SpringOne-Using Spring Security 2

    - **Grails and Trails**:与Groovy和Ruby on Rails框架集成; - **Mule**:与企业集成平台Mule ESB集成; - **DWR**:与Direct Web Remoting集成; - **Appfuse**:与快速开发框架集成; - **AndroMDA**:与元数据...

    grails-2.4.4.zip

    Grails 借鉴了Ruby on Rails的设计理念,引入了GORM(Grails Object Relational Mapping)用于数据库操作,以及一系列的插件系统,支持快速构建复杂的Web应用程序。 2. **Groovy语言基础** Grails 采用Groovy作为...

    a_smoll_theme-120126898232

    Liquid 是一种开源的、设计简洁的模板语言,由 Shopify 创建并广泛用于电子商务平台,尤其是与 Ruby on Rails 集成的项目。它被用来动态渲染网页内容,允许开发者和设计师在不触及后端代码的情况下,轻松地创建和...

    已过滤:以一种很好的方式过滤ActiveRecord查询

    已过滤-将过滤器添加到ActiveRecord查询 gem帮助以老式的方式为Rails的ActiveRecord创建过滤器。 它使您的控制器更简单,形式轻松。 安装 将此行添加到您的应用程序的Gemfile中... create app/filters/application_fil

    hello-sparkjava:使用mongodb的Spark Java

    Spark Java提供了一组简单的API,使得开发者可以使用Java编写简洁、直观的路由代码,类似于Ruby on Rails。安装Spark Java通常通过Maven或Gradle添加依赖,例如在pom.xml中引入: ```xml &lt;groupId&gt;...

Global site tag (gtag.js) - Google Analytics