diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-08-31 15:23:13 +0100 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-08-31 15:23:45 +0100 |
commit | a13d335461c6b177f0365ad07625c15f10ace271 (patch) | |
tree | 5a272d8633fca365a171a04b6366d701437a57a1 /actionpack/lib/action_view | |
parent | c50223b76fdb843dc7e4d4522627a5b20f955a03 (diff) | |
download | rails-a13d335461c6b177f0365ad07625c15f10ace271.tar.gz rails-a13d335461c6b177f0365ad07625c15f10ace271.tar.bz2 rails-a13d335461c6b177f0365ad07625c15f10ace271.zip |
Move layout rendering logic to ActionView::Base
Diffstat (limited to 'actionpack/lib/action_view')
-rw-r--r-- | actionpack/lib/action_view/base.rb | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index ce629d332a..f1c6f4a7a0 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -246,23 +246,8 @@ module ActionView #:nodoc: update_page(&block) elsif options.is_a?(Hash) options = options.reverse_merge(:locals => {}) - - if partial_layout = options.delete(:layout) - if block_given? - begin - @_proc_for_layout = block - concat(render(options.merge(:partial => partial_layout))) - ensure - @_proc_for_layout = nil - end - else - begin - original_content_for_layout, @content_for_layout = @content_for_layout, render(options) - render(options.merge(:partial => partial_layout)) - ensure - @content_for_layout = original_content_for_layout - end - end + if options[:layout] + render_with_layout(options, local_assigns, &block) elsif options[:file] if options[:use_full_path] ActiveSupport::Deprecation.warn("use_full_path option has been deprecated and has no affect.", caller) @@ -273,6 +258,8 @@ module ActionView #:nodoc: render_partial(options) elsif options[:inline] InlineTemplate.new(options[:inline], options[:type]).render(self, options[:locals]) + elsif options[:text] + options[:text] end end end @@ -362,5 +349,29 @@ module ActionView #:nodoc: controller.response.content_type ||= content_type end end + + def render_with_layout(options, local_assigns, &block) + partial_layout = options.delete(:layout) + if block_given? + begin + @_proc_for_layout = block + concat(render(options.merge(:partial => partial_layout))) + ensure + @_proc_for_layout = nil + end + else + begin + original_content_for_layout, @content_for_layout = @content_for_layout, render(options) + if (options[:inline] || options[:file] || options[:text]) + @cached_content_for_layout = @content_for_layout + render(:file => partial_layout, :locals => local_assigns) + else + render(options.merge(:partial => partial_layout)) + end + ensure + @content_for_layout = original_content_for_layout + end + end + end end end |