From ce21ea783255a30e330c7218a3043801dfe9ad52 Mon Sep 17 00:00:00 2001 From: artemave Date: Fri, 1 Oct 2010 17:49:30 +0000 Subject: #948 make template inheritance optional --- actionpack/lib/abstract_controller/rendering.rb | 16 ++++++++++++---- actionpack/test/controller/new_base/render_test.rb | 11 +++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/actionpack/lib/abstract_controller/rendering.rb b/actionpack/lib/abstract_controller/rendering.rb index 06f4441609..01dd4ffeb1 100644 --- a/actionpack/lib/abstract_controller/rendering.rb +++ b/actionpack/lib/abstract_controller/rendering.rb @@ -117,11 +117,14 @@ module AbstractController # The prefixes used in render "foo" shortcuts. def _prefixes prefixes = [controller_path] - parent_controller = self.class.superclass - until parent_controller.abstract? - prefixes << parent_controller.controller_path - parent_controller = parent_controller.superclass + if template_inheritance? + parent_controller = self.class.superclass + + until parent_controller.abstract? + prefixes << parent_controller.controller_path + parent_controller = parent_controller.superclass + end end prefixes @@ -173,5 +176,10 @@ module AbstractController def _process_options(options) end + + def template_inheritance? + # is there a better way to check for config option being set? + config.template_inheritance.nil? ? true : config.template_inheritance + end end end diff --git a/actionpack/test/controller/new_base/render_test.rb b/actionpack/test/controller/new_base/render_test.rb index a520934c5b..f5baa829b6 100644 --- a/actionpack/test/controller/new_base/render_test.rb +++ b/actionpack/test/controller/new_base/render_test.rb @@ -53,6 +53,10 @@ module Render prepend_view_path ActionView::FixtureResolver.new("render/child_render/overriden_with_own_view_paths_prepended.html.erb" => "child content") end + class ChildRenderWithoutInheritanceController < BlankRenderController + config.template_inheritance = false + end + class RenderTest < Rack::TestCase test "render with blank" do with_routing do |set| @@ -135,4 +139,11 @@ module Render end end + class TestNoViewInheritance < Rack::TestCase + test "Template from parent controller does not get picked if config.action_controller.template_inheritance = false" do + assert_raises(ActionView::MissingTemplate) do + get "/render/child_render_without_inheritance/index", {}, "action_dispatch.show_exceptions" => false + end + end + end end -- cgit v1.2.3