diff options
Diffstat (limited to 'actionpack/lib/action_controller/abstract/renderer.rb')
| -rw-r--r-- | actionpack/lib/action_controller/abstract/renderer.rb | 35 | 
1 files changed, 24 insertions, 11 deletions
| diff --git a/actionpack/lib/action_controller/abstract/renderer.rb b/actionpack/lib/action_controller/abstract/renderer.rb index e31accbbfc..f2044a35ec 100644 --- a/actionpack/lib/action_controller/abstract/renderer.rb +++ b/actionpack/lib/action_controller/abstract/renderer.rb @@ -2,22 +2,28 @@ require "action_controller/abstract/logger"  module AbstractController    module Renderer +    extend ActiveSupport::DependencyModule +      depends_on AbstractController::Logger -     -    setup do + +    included do        attr_internal :formats -       +        extlib_inheritable_accessor :_view_paths -       +        self._view_paths ||= ActionView::PathSet.new      end -         +      def _action_view        @_action_view ||= ActionView::Base.new(self.class.view_paths, {}, self)            end -    def render(options = {}) -      self.response_body = render_to_body(options) +    def render(*args) +      if response_body +        raise AbstractController::DoubleRenderError, "OMG" +      end +       +      self.response_body = render_to_body(*args)      end      # Raw rendering of a template to a Rack-compatible body. @@ -28,9 +34,16 @@ module AbstractController      # :api: plugin      def render_to_body(options = {})        name = options[:_template_name] || action_name -       -      template = options[:_template] || view_paths.find_by_parts(name.to_s, {:formats => formats}, options[:_prefix]) -      _render_template(template, options) + +      # TODO: Refactor so we can just use the normal template logic for this +      if options[:_partial_object] +        _action_view._render_partial_from_controller(options) +      else  +        options[:_template] ||= view_paths.find_by_parts(name.to_s, {:formats => formats},  +        options[:_prefix], options[:_partial]) + +        _render_template(options[:_template], options) +      end      end      # Raw rendering of a template to a string. @@ -44,7 +57,7 @@ module AbstractController      end      def _render_template(template, options) -      _action_view._render_template_with_layout(template) +      _action_view._render_template_from_controller(template, nil, options, options[:_partial])      end      def view_paths() _view_paths end | 
