method

append_around_filter

Importance_3
v2.3.8 - Show latest stable - 2 notes - Class: ActionController::Filters::ClassMethods
append_around_filter(*filters, &block) public

If you append_around_filter A.new, B.new, the filter chain looks like

  B#before
    A#before
      # run the action
    A#after
  B#after

With around filters which yield to the action block, before and after are the code before and after the yield.

Show source
Register or log in to add new notes.
August 7, 2008 - (>= v2.1.0)
6 thanks

around_filter - working example

More detailed, working example of usage:

class HomeController < ApplicationController   
  around_filter :action1, :action2

  around_filter do |controller, action|
    logger.info "code block before action"
    action.call
    logger.info "code block after action"
  end

  def index
    logger.info "ACTION"
  end       

  private # filters should not be available for external URL

  def action1            
    logger.info "ACTION1 before yield"
    yield "ACTION1" 
    logger.info "ACTION1 after yield"
  end

  def action2            
    logger.info "ACTION2 before yield"
    yield "ACTION2" 
    logger.info "ACTION2 after yield"
  end       
end

Results (in log file):

ACTION1 before yield
ACTION2 before yield
code block before action
ACTION
Rendering home/index
code block after action
ACTION2 after yield
ACTION1 after yield 
July 4, 2008
2 thanks

around_filter code example

This is how it’s used:

around_filter do |controller, action|
  do_your(:stuff) do
    action.call
  end
end