diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2009-05-16 17:13:58 +0200 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2009-05-16 17:13:58 +0200 |
commit | 6be72a1e6287c5c098dd518ddc0467e473164869 (patch) | |
tree | 89e7f6bf9ff6b7cf1ed5f2424991dc472e6a2c24 /actionpack/lib/action_controller/abstract | |
parent | c8fb22bc2933beb5c6cc4113380c8faf77d87ffe (diff) | |
parent | a6d8ca0f0e65ce509793713cb1efe4ab721b9eb4 (diff) | |
download | rails-6be72a1e6287c5c098dd518ddc0467e473164869.tar.gz rails-6be72a1e6287c5c098dd518ddc0467e473164869.tar.bz2 rails-6be72a1e6287c5c098dd518ddc0467e473164869.zip |
Merge commit 'mainstream/master'
Diffstat (limited to 'actionpack/lib/action_controller/abstract')
-rw-r--r-- | actionpack/lib/action_controller/abstract/base.rb | 27 | ||||
-rw-r--r-- | actionpack/lib/action_controller/abstract/callbacks.rb | 4 |
2 files changed, 17 insertions, 14 deletions
diff --git a/actionpack/lib/action_controller/abstract/base.rb b/actionpack/lib/action_controller/abstract/base.rb index f2db201063..1f2f096dae 100644 --- a/actionpack/lib/action_controller/abstract/base.rb +++ b/actionpack/lib/action_controller/abstract/base.rb @@ -69,14 +69,13 @@ module AbstractController end def process(action_name) - action_name = action_name.to_s + @_action_name = action_name = action_name.to_s - unless respond_to_action?(action_name) + unless action_name = method_for_action(action_name) raise ActionNotFound, "The action '#{action_name}' could not be found" end - - @_action_name = action_name - process_action + + process_action(action_name) self end @@ -95,18 +94,22 @@ module AbstractController # is overridden in a subclass. For instance, ActionController::Base # overrides it to include the case where a template matching the # action_name is found. - def process_action - if action_method?(action_name) then send(action_name) - elsif respond_to?(:action_missing, true) then action_missing(action_name) - end + def process_action(method_name) + send(method_name) end - + + def _handle_action_missing + action_missing(@_action_name) + end + # Override this to change the conditions that will raise an # ActionNotFound error. If you accept a difference case, # you must handle it by also overriding process_action and # handling the case. - def respond_to_action?(action_name) - action_method?(action_name) || respond_to?(:action_missing, true) + def method_for_action(action_name) + if action_method?(action_name) then action_name + elsif respond_to?(:action_missing, true) then "_handle_action_missing" + end end end end
\ No newline at end of file diff --git a/actionpack/lib/action_controller/abstract/callbacks.rb b/actionpack/lib/action_controller/abstract/callbacks.rb index 3aff83a209..51b968c694 100644 --- a/actionpack/lib/action_controller/abstract/callbacks.rb +++ b/actionpack/lib/action_controller/abstract/callbacks.rb @@ -8,8 +8,8 @@ module AbstractController define_callbacks :process_action, "response_body" end - def process_action - _run_process_action_callbacks(action_name) do + def process_action(method_name) + _run_process_action_callbacks(method_name) do super end end |