diff options
Diffstat (limited to 'actionpack/lib/action_view/base.rb')
-rw-r--r-- | actionpack/lib/action_view/base.rb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index 63ec0021b0..a8e6655bd6 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -304,7 +304,17 @@ module ActionView #:nodoc: elsif options.is_a?(Hash) options = options.reverse_merge(:type => :erb, :locals => {}, :use_full_path => true) - if options[:file] + if options[:layout] + 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) + else + @content_for_layout = render(options) + render(options.merge(:partial => "#{path}/#{partial_name}")) + end + elsif options[:file] render_file(options[:file], options[:use_full_path], options[:locals]) elsif options[:partial] && options[:collection] render_partial_collection(options[:partial], options[:collection], options[:spacer_template], options[:locals]) |