aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller')
-rwxr-xr-xactionpack/lib/action_controller/base.rb10
-rw-r--r--actionpack/lib/action_controller/layout.rb2
2 files changed, 11 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index 9aab2c5028..c1adbf3b8a 100755
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -937,7 +937,17 @@ module ActionController #:nodoc:
end
def default_template_name(default_action_name = action_name)
+ default_action_name = default_action_name.dup
+ strip_out_controller!(default_action_name) if template_path_includes_controller?(default_action_name)
"#{self.class.controller_path}/#{default_action_name}"
end
+
+ def strip_out_controller!(path)
+ path.replace path.split('/', 2).last
+ end
+
+ def template_path_includes_controller?(path)
+ path.to_s['/'] && self.class.controller_path.split('/')[-1] == path.split('/')[0]
+ end
end
end
diff --git a/actionpack/lib/action_controller/layout.rb b/actionpack/lib/action_controller/layout.rb
index d6a4789bef..3ec125f088 100644
--- a/actionpack/lib/action_controller/layout.rb
+++ b/actionpack/lib/action_controller/layout.rb
@@ -237,7 +237,7 @@ module ActionController #:nodoc:
def candidate_for_layout?(options)
(options.has_key?(:layout) && options[:layout] != false) ||
options.values_at(:text, :file, :inline, :partial, :nothing).compact.empty? &&
- !template_exempt_from_layout?(default_template_name(options[:action]))
+ !template_exempt_from_layout?(default_template_name(options[:action] || options[:template]))
end
def pick_layout(template_with_options, options, deprecated_layout)