diff options
author | José Valim <jose.valim@gmail.com> | 2009-08-07 17:13:44 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2009-08-07 17:13:44 +0200 |
commit | e45e120af99f0d598e9fcdc24ec06cdd3615ba06 (patch) | |
tree | 0f3618e1cb067addc9084b173d89994839b2a2ef /actionpack/lib | |
parent | dac8927b0576bff89ba3a4fcbf502dffc9b39e89 (diff) | |
parent | bfe58ac05d4b7ba5d5c04c3aa9a719e340b2111e (diff) | |
download | rails-e45e120af99f0d598e9fcdc24ec06cdd3615ba06.tar.gz rails-e45e120af99f0d598e9fcdc24ec06cdd3615ba06.tar.bz2 rails-e45e120af99f0d598e9fcdc24ec06cdd3615ba06.zip |
Merge branch 'master' of git://github.com/rails/rails into old
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/abstract_controller/layouts.rb | 16 | ||||
-rw-r--r-- | actionpack/lib/abstract_controller/renderer.rb | 2 | ||||
-rw-r--r-- | actionpack/lib/action_controller/metal/renderer.rb | 15 | ||||
-rw-r--r-- | actionpack/lib/action_view/render/partials.rb | 4 |
4 files changed, 23 insertions, 14 deletions
diff --git a/actionpack/lib/abstract_controller/layouts.rb b/actionpack/lib/abstract_controller/layouts.rb index f021dd8b62..038598a3b3 100644 --- a/actionpack/lib/abstract_controller/layouts.rb +++ b/actionpack/lib/abstract_controller/layouts.rb @@ -88,6 +88,22 @@ module AbstractController end end + def render_to_body(options = {}) + response = super + + if options.key?(:partial) + # This is a little bit messy. We need to explicitly handle partial + # layouts here since the core lookup logic is in the view, but + # we need to determine the layout based on the controller + if options.key?(:layout) + layout = _layout_for_option(options[:layout], options[:_template].details) + response = layout.render(view_context, options[:locals]) { response } + end + end + + response + end + private # This will be overwritten by _write_layout_method def _layout(details) end diff --git a/actionpack/lib/abstract_controller/renderer.rb b/actionpack/lib/abstract_controller/renderer.rb index 73e6b2a4dc..da57d0ff4d 100644 --- a/actionpack/lib/abstract_controller/renderer.rb +++ b/actionpack/lib/abstract_controller/renderer.rb @@ -54,7 +54,7 @@ module AbstractController # :api: plugin def render_to_body(options = {}) # TODO: Refactor so we can just use the normal template logic for this - if options.key?(:_partial_object) + if options.key?(:partial) view_context.render_partial(options) else _determine_template(options) diff --git a/actionpack/lib/action_controller/metal/renderer.rb b/actionpack/lib/action_controller/metal/renderer.rb index 5a458764ad..31ba7e582a 100644 --- a/actionpack/lib/action_controller/metal/renderer.rb +++ b/actionpack/lib/action_controller/metal/renderer.rb @@ -22,7 +22,8 @@ module ActionController _process_options(options) if options.key?(:partial) - _render_partial(options[:partial], options) + options[:partial] = action_name if options[:partial] == true + options[:_details] = {:formats => formats} end super @@ -53,18 +54,6 @@ module ActionController end def _render_partial(partial, options) - case partial - when true - options[:_prefix] = _prefix - when String - options[:_prefix] = _prefix unless partial.include?(?/) - options[:_template_name] = partial - else - options[:_partial_object] = true - return - end - - options[:_partial] = options[:object] || true end def _process_options(options) diff --git a/actionpack/lib/action_view/render/partials.rb b/actionpack/lib/action_view/render/partials.rb index b7b14e9007..48cba9c02b 100644 --- a/actionpack/lib/action_view/render/partials.rb +++ b/actionpack/lib/action_view/render/partials.rb @@ -185,6 +185,8 @@ module ActionView def render_partial(options) @assigns_added = false + # TODO: Handle other details here. + self.formats = options[:_details][:formats] _render_partial(options) end @@ -235,6 +237,8 @@ module ActionView end def _render_partial_collection(collection, options = {}, template = nil, &block) #:nodoc: + options[:_template] ||= template + return nil if collection.blank? if options.key?(:spacer_template) |