AbstractController::Base is a low-level API. Nobody should be using it directly, and subclasses (like ActionController::Base) are expected to provide their own render method, since rendering means different things depending on the context.

Methods
A
C
H
I
M
P
Included Modules
Attributes
[R] abstract
Class Public methods
abstract!()

Define a controller as abstract. See internal_methods for more details.

    # File actionpack/lib/abstract_controller/base.rb, line 29
29:       def abstract!
30:         @abstract = true
31:       end
action_methods()

A list of method names that should be considered actions. This includes all public instance methods on a controller, less any internal methods (see internal_methods), adding back in any methods that are internal, but still exist on the class itself. Finally, hidden_actions are removed.

Returns

  • array - A list of all methods that should be considered actions.
    # File actionpack/lib/abstract_controller/base.rb, line 63
63:       def action_methods
64:         @action_methods ||= begin
65:           # All public instance methods of this class, including ancestors
66:           methods = (public_instance_methods(true) -
67:             # Except for public instance methods of Base and its ancestors
68:             internal_methods +
69:             # Be sure to include shadowed public instance methods of this class
70:             public_instance_methods(false)).uniq.map { |x| x.to_s } -
71:             # And always exclude explicitly hidden actions
72:             hidden_actions.to_a
73: 
74:           # Clear out AS callback method pollution
75:           methods.reject { |method| method =~ /_one_time_conditions/ }
76:         end
77:       end
clear_action_methods!()

action_methods are cached and there is sometimes need to refresh them. clear_action_methods! allows you to do that, so next time you run action_methods, they will be recalculated

    # File actionpack/lib/abstract_controller/base.rb, line 82
82:       def clear_action_methods!
83:         @action_methods = nil
84:       end
controller_path()

Returns the full controller name, underscored, without the ending Controller. For instance, MyApp::MyPostsController would return “my_app/my_posts“ for controller_name.

Returns

  • string
    # File actionpack/lib/abstract_controller/base.rb, line 92
92:       def controller_path
93:         @controller_path ||= name.sub(/Controller$/, '').underscore unless anonymous?
94:       end
hidden_actions()

The list of hidden actions to an empty array. Defaults to an empty array. This can be modified by other modules or subclasses to specify particular actions as hidden.

Returns

  • array - An array of method names that should not be considered actions.
    # File actionpack/lib/abstract_controller/base.rb, line 51
51:       def hidden_actions
52:         []
53:       end
internal_methods()

A list of all internal methods for a controller. This finds the first abstract superclass of a controller, and gets a list of all public instance methods on that abstract class. Public instance methods of a controller would normally be considered action methods, so methods declared on abstract classes are being removed. (ActionController::Metal and ActionController::Base are defined as abstract)

    # File actionpack/lib/abstract_controller/base.rb, line 39
39:       def internal_methods
40:         controller = self
41:         controller = controller.superclass until controller.abstract?
42:         controller.public_instance_methods(true)
43:       end
method_added(name)
    # File actionpack/lib/abstract_controller/base.rb, line 96
96:       def method_added(name)
97:         super
98:         clear_action_methods!
99:       end
Instance Public methods
action_methods()
     # File actionpack/lib/abstract_controller/base.rb, line 129
129:     def action_methods
130:       self.class.action_methods
131:     end
available_action?(action_name)

Returns true if a method for the action is available and can be dispatched, false otherwise.

Notice that action_methods.include?("foo") may return false and available_action?("foo") returns true because available action consider actions that are also available through other means, for example, implicit render ones.

     # File actionpack/lib/abstract_controller/base.rb, line 140
140:     def available_action?(action_name)
141:       method_for_action(action_name).present?
142:     end
controller_path()

Delegates to the class’ controller_path

     # File actionpack/lib/abstract_controller/base.rb, line 125
125:     def controller_path
126:       self.class.controller_path
127:     end
process(action, *args)

Calls the action going through the entire action dispatch stack.

The actual method that is called is determined by calling method_for_action. If no method can handle the action, then an ActionNotFound error is raised.

Returns

  • self
     # File actionpack/lib/abstract_controller/base.rb, line 112
112:     def process(action, *args)
113:       @_action_name = action_name = action.to_s
114: 
115:       unless action_name = method_for_action(action_name)
116:         raise ActionNotFound, "The action '#{action}' could not be found for #{self.class.name}"
117:       end
118: 
119:       @_response_body = nil
120: 
121:       process_action(action_name, *args)
122:     end