     only = if Batman.typeOf(options.only) is 'String' then [options.only] else options.only
     except = if Batman.typeOf(options.except) is 'String' then [options.except] else options.except
 
-    normalized.if = (params) ->
+    normalized.if = (params, frame) ->
       return false if @_afterFilterRedirect
-      return false if only and params.action not in only
-      return false if except and params.action in except
+      return false if only and frame.action not in only
+      return false if except and frame.action in except
       return true
 
     return normalized

    Batman.developer.assert @[action], "Error! Controller action #{@get('routingKey')}.#{action} couldn't be found!"

    parentFrame = @_actionFrames[@_actionFrames.length - 1]
    frame = new Batman.ControllerActionFrame {parentFrame, action}, =>
      @fireLifecycleEvent('afterFilter', params) if not @_afterFilterRedirect
      @_resetActionFrames()
      Batman.navigator?.redirect = oldRedirect


      if Batman.typeOf(url) is 'Object'
        url.controller = this if not url.controller

      Batman.redirect(url)

  render: (options = {}) ->
    if frame = @_actionFrames?[@_actionFrames.length - 1]
