diff options
Diffstat (limited to 'actionpack/lib/action_view/render/rendering.rb')
-rw-r--r-- | actionpack/lib/action_view/render/rendering.rb | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/actionpack/lib/action_view/render/rendering.rb b/actionpack/lib/action_view/render/rendering.rb index a721ade4e1..39b8608c68 100644 --- a/actionpack/lib/action_view/render/rendering.rb +++ b/actionpack/lib/action_view/render/rendering.rb @@ -13,12 +13,15 @@ module ActionView def render(options = {}, locals = {}, &block) #:nodoc: case options when String, NilClass - _render_partial_unknown_type(:partial => options, :locals => locals || {}) + _render_partial(:partial => options, :locals => locals || {}) when Hash layout = options[:layout] - if options.key?(:partial) || block_given? - return _render_partial(layout, options, &block) + if block_given? + return concat(_render_partial(options.merge(:partial => layout), &block)) + elsif options.key?(:partial) + layout = _pick_partial_template(layout) if layout + return _render_content(_render_partial(options), layout, options[:locals]) end layout = find_by_parts(layout, {:formats => formats}) if layout |