From d5645fd4a0b8160646e69273626a77badd9ab1a4 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 3 Jan 2008 15:28:36 +0000 Subject: Fixed rendering of partials with layout when done from site layout (closes #9209) [antramm] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8541 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_view/base.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'actionpack/lib') diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index 0f966addb6..6fde9ccf73 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -338,11 +338,13 @@ If you are rendering a subtemplate, you must now use controller-like partial syn path, partial_name = partial_pieces(options.delete(:layout)) if block_given? - @content_for_layout = capture(&block) - concat(render(options.merge(:partial => "#{path}/#{partial_name}")), block.binding) + wrap_content_for_layout capture(&block) do + concat(render(options.merge(:partial => "#{path}/#{partial_name}")), block.binding) + end else - @content_for_layout = render(options) - render(options.merge(:partial => "#{path}/#{partial_name}")) + wrap_content_for_layout render(options) do + render(options.merge(:partial => "#{path}/#{partial_name}")) + end end elsif options[:file] render_file(options[:file], options[:use_full_path], options[:locals]) @@ -441,6 +443,12 @@ If you are rendering a subtemplate, you must now use controller-like partial syn end private + def wrap_content_for_layout(content) + original_content_for_layout = @content_for_layout + @content_for_layout = content + returning(yield) { @content_for_layout = original_content_for_layout } + end + def find_full_template_path(template_path, extension) file_name = "#{template_path}.#{extension}" base_path = find_base_path_for(file_name) -- cgit v1.2.3