diff options
author | José Valim <jose.valim@gmail.com> | 2012-03-06 00:50:00 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-03-06 00:50:00 -0800 |
commit | 688e4f0fd1f715bf2d81523fa828bdae5f6743a1 (patch) | |
tree | 1176a476ced796af718c04382a45e3a219390a7b /actionpack/lib/action_controller | |
parent | e1a882a15b71435ec82a596978429b34d4c73ac5 (diff) | |
parent | 82a8698e564e5c27ac3516f0b44449a74b4389be (diff) | |
download | rails-688e4f0fd1f715bf2d81523fa828bdae5f6743a1.tar.gz rails-688e4f0fd1f715bf2d81523fa828bdae5f6743a1.tar.bz2 rails-688e4f0fd1f715bf2d81523fa828bdae5f6743a1.zip |
Merge pull request #5299 from sikachu/3-2-stable-fix-responder
Always passing a respond block from to responder
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r-- | actionpack/lib/action_controller/metal/mime_responds.rb | 12 | ||||
-rw-r--r-- | actionpack/lib/action_controller/metal/responder.rb | 13 |
2 files changed, 13 insertions, 12 deletions
diff --git a/actionpack/lib/action_controller/metal/mime_responds.rb b/actionpack/lib/action_controller/metal/mime_responds.rb index 55de7e7d8e..73781756c8 100644 --- a/actionpack/lib/action_controller/metal/mime_responds.rb +++ b/actionpack/lib/action_controller/metal/mime_responds.rb @@ -235,16 +235,8 @@ module ActionController #:nodoc: if collector = retrieve_collector_from_mimes(&block) options = resources.size == 1 ? {} : resources.extract_options! - - if defined_response = collector.response - if action = options.delete(:action) - render :action => action - else - defined_response.call - end - else - (options.delete(:responder) || self.class.responder).call(self, resources, options) - end + options[:default_response] = collector.response + (options.delete(:responder) || self.class.responder).call(self, resources, options) end end diff --git a/actionpack/lib/action_controller/metal/responder.rb b/actionpack/lib/action_controller/metal/responder.rb index daa1ddd65f..ad28abacb0 100644 --- a/actionpack/lib/action_controller/metal/responder.rb +++ b/actionpack/lib/action_controller/metal/responder.rb @@ -129,6 +129,7 @@ module ActionController #:nodoc: @resources = resources @options = options @action = options.delete(:action) + @default_response = options.delete(:default_response) end delegate :head, :render, :redirect_to, :to => :controller @@ -171,7 +172,7 @@ module ActionController #:nodoc: # responds to :to_format and display it. # def to_format - if get? || !has_errors? + if get? || !has_errors? || response_overridden? default_render else display_errors @@ -225,7 +226,11 @@ module ActionController #:nodoc: # controller. # def default_render - controller.default_render(options) + if @default_response + @default_response.call(options) + else + controller.default_render(options) + end end # Display is just a shortcut to render a resource with the current format. @@ -273,5 +278,9 @@ module ActionController #:nodoc: def json_resource_errors {:errors => resource.errors} end + + def response_overridden? + @default_response.present? + end end end |