From 46fbd6cddf5ae726e2aff1e0c2c3d9980fce34d9 Mon Sep 17 00:00:00 2001 From: Darcy Laycock Date: Sun, 9 May 2010 20:21:27 +0800 Subject: [PATCH] Make ActionController::Responder use the correct request method --- .../lib/action_controller/metal/responder.rb | 2 +- actionpack/test/controller/responder_test.rb | 50 ++++++++++++++++++++ actionpack/test/fixtures/responder/edit.html.erb | 1 + actionpack/test/fixtures/responder/new.html.erb | 1 + 4 files changed, 53 insertions(+), 1 deletions(-) create mode 100644 actionpack/test/controller/responder_test.rb create mode 100644 actionpack/test/fixtures/responder/edit.html.erb create mode 100644 actionpack/test/fixtures/responder/new.html.erb diff --git a/actionpack/lib/action_controller/metal/responder.rb b/actionpack/lib/action_controller/metal/responder.rb index 6ad9a23..22bdcd0 100644 --- a/actionpack/lib/action_controller/metal/responder.rb +++ b/actionpack/lib/action_controller/metal/responder.rb @@ -217,7 +217,7 @@ module ActionController #:nodoc: # the verb is POST. # def default_action - @action ||= ACTIONS_FOR_VERBS[request.method_symbol] + @action ||= ACTIONS_FOR_VERBS[request.request_method_symbol] end end end diff --git a/actionpack/test/controller/responder_test.rb b/actionpack/test/controller/responder_test.rb new file mode 100644 index 0000000..1c7eabd --- /dev/null +++ b/actionpack/test/controller/responder_test.rb @@ -0,0 +1,50 @@ +require 'abstract_unit' +require 'controller/fake_models' + +class AlwaysErroredResponder < ActionController::Responder + def has_errors? + true + end +end + +class ResponderController < ActionController::Base + self.responder = AlwaysErroredResponder + + respond_to :html + + def create + respond_with(resource) + end + + def update + respond_with(resource) + end + + protected + + def resource + Customer.new("david", 13) + end + +end + +class ResponderControllerTest < ActionController::TestCase + tests ResponderController + + test "should render the edit template after failed update" do + put :update + assert_template 'edit' + end + + test "should render the edit template after failed update with fake put" do + request.env["rack.methodoverride.original_method"] = "POST" + put :update + assert_template 'edit' + end + + test "should render the new template after failed create" do + post :create + assert_template 'new' + end + +end \ No newline at end of file diff --git a/actionpack/test/fixtures/responder/edit.html.erb b/actionpack/test/fixtures/responder/edit.html.erb new file mode 100644 index 0000000..ae82dfa --- /dev/null +++ b/actionpack/test/fixtures/responder/edit.html.erb @@ -0,0 +1 @@ +Edit world! diff --git a/actionpack/test/fixtures/responder/new.html.erb b/actionpack/test/fixtures/responder/new.html.erb new file mode 100644 index 0000000..96c8f1b --- /dev/null +++ b/actionpack/test/fixtures/responder/new.html.erb @@ -0,0 +1 @@ +New world! -- 1.6.3.3