aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_controller/components.rb2
-rw-r--r--actionpack/test/controller/components_test.rb13
2 files changed, 14 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/components.rb b/actionpack/lib/action_controller/components.rb
index 0d17d51ef8..148f7b9119 100644
--- a/actionpack/lib/action_controller/components.rb
+++ b/actionpack/lib/action_controller/components.rb
@@ -17,7 +17,7 @@ module ActionController #:nodoc:
end
def component_class(options)
- options[:controller] ? (options[:controller].camelize + "Controller").constantize : self
+ options[:controller] ? (options[:controller].camelize + "Controller").constantize : self.class
end
def component_request(options)
diff --git a/actionpack/test/controller/components_test.rb b/actionpack/test/controller/components_test.rb
index 36f15d8df5..7ad3108dd7 100644
--- a/actionpack/test/controller/components_test.rb
+++ b/actionpack/test/controller/components_test.rb
@@ -17,6 +17,14 @@ class CallerController < ActionController::Base
render_template "Ring, ring: <%= render_component(:controller => 'callee', :action => 'being_called') %>"
end
+ def internal_caller
+ render_template "Are you there? <%= render_component(:action => 'internal_callee') %>"
+ end
+
+ def internal_callee
+ render_text "Yes, ma'am"
+ end
+
def rescue_action(e) raise end
end
@@ -58,4 +66,9 @@ class RenderTest < Test::Unit::TestCase
get :calling_from_template
assert_equal "Ring, ring: Lady of the House, speaking", @response.body
end
+
+ def test_internal_calling
+ get :internal_caller
+ assert_equal "Are you there? Yes, ma'am", @response.body
+ end
end \ No newline at end of file