diff options
Diffstat (limited to 'actionpack/lib/action_view/renderer/renderer.rb')
-rw-r--r-- | actionpack/lib/action_view/renderer/renderer.rb | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/actionpack/lib/action_view/renderer/renderer.rb b/actionpack/lib/action_view/renderer/renderer.rb index 7b95c2dd92..582ed2f9f8 100644 --- a/actionpack/lib/action_view/renderer/renderer.rb +++ b/actionpack/lib/action_view/renderer/renderer.rb @@ -3,37 +3,25 @@ module ActionView # to other objects like TemplateRenderer and PartialRenderer which # actually renders the template. class Renderer - attr_accessor :lookup_context + attr_accessor :lookup_context, :controller - # TODO: render_context should not be an initialization parameter - # TODO: controller should be received on initialization - def initialize(lookup_context, render_context) - @render_context = render_context + def initialize(lookup_context, controller) @lookup_context = lookup_context - @view_flow = OutputFlow.new + @controller = controller end - # Returns the result of a render that's dictated by the options hash. The primary options are: - # - # * <tt>:partial</tt> - See ActionView::Partials. - # * <tt>:file</tt> - Renders an explicit template file (this used to be the old default), add :locals to pass in those. - # * <tt>:inline</tt> - Renders an inline template similar to how it's done in the controller. - # * <tt>:text</tt> - Renders the text passed in out. - # - # If no options hash is passed or :update specified, the default is to render a partial and use the second parameter - # as the locals hash. - def render(options = {}, locals = {}, &block) + def render(context, options = {}, locals = {}, &block) case options when Hash if block_given? - _render_partial(options.merge(:partial => options[:layout]), &block) + _render_partial(context, options.merge(:partial => options[:layout]), &block) elsif options.key?(:partial) - _render_partial(options) + _render_partial(context, options) else - _render_template(options) + _render_template(context, options) end else - _render_partial(:partial => options, :locals => locals) + _render_partial(context, :partial => options, :locals => locals) end end @@ -42,30 +30,30 @@ module ActionView # # Note that partials are not supported to be rendered with streaming, # so in such cases, we just wrap them in an array. - def render_body(options) + def render_body(context, options) if options.key?(:partial) - [_render_partial(options)] + [_render_partial(context, options)] else - StreamingTemplateRenderer.new(@render_context, @lookup_context).render(options) + StreamingTemplateRenderer.new(@lookup_context, @controller).render(context, options) end end private - def _render_template(options) #:nodoc: - _template_renderer.render(options) + def _render_template(context, options) #:nodoc: + _template_renderer.render(context, options) end def _template_renderer #:nodoc: - @_template_renderer ||= TemplateRenderer.new(@render_context, @lookup_context) + @_template_renderer ||= TemplateRenderer.new(@lookup_context, @controller) end - def _render_partial(options, &block) #:nodoc: - _partial_renderer.setup(options, block).render + def _render_partial(context, options, &block) #:nodoc: + _partial_renderer.render(context, options, block) end def _partial_renderer #:nodoc: - @_partial_renderer ||= PartialRenderer.new(@render_context, @lookup_context) + @_partial_renderer ||= PartialRenderer.new(@lookup_context, @controller) end end end
\ No newline at end of file |