Class: ActionView::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/action_view/renderer/renderer.rb

Overview

This is the main entry point for rendering. It basically delegates to other objects like TemplateRenderer and PartialRenderer which actually renders the template.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lookup_context) ⇒ Renderer

Returns a new instance of Renderer.



8
9
10
# File 'lib/action_view/renderer/renderer.rb', line 8

def initialize(lookup_context)
  @lookup_context = lookup_context
end

Instance Attribute Details

#lookup_contextObject

Returns the value of attribute lookup_context.



6
7
8
# File 'lib/action_view/renderer/renderer.rb', line 6

def lookup_context
  @lookup_context
end

Instance Method Details

#render(context, options) ⇒ Object

Main render entry point shared by AV and AC.



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/action_view/renderer/renderer.rb', line 13

def render(context, options)
  if (options.is_a?(HashWithIndifferentAccess) && !options.respond_to?(:permitted?)) ||
     (options.respond_to?(:permitted?) && !options.permitted?)
    raise ArgumentError, "render parameters are not permitted"
  end

  if options.key?(:partial)
    render_partial(context, options)
  else
    render_template(context, options)
  end
end

#render_body(context, options) ⇒ Object

Render but returns a valid Rack body. If fibers are defined, we return a streaming body that renders the template piece by piece.

Note that partials are not supported to be rendered with streaming, so in such cases, we just wrap them in an array.



31
32
33
34
35
36
37
# File 'lib/action_view/renderer/renderer.rb', line 31

def render_body(context, options)
  if options.key?(:partial)
    [render_partial(context, options)]
  else
    StreamingTemplateRenderer.new(@lookup_context).render(context, options)
  end
end

#render_partial(context, options, &block) ⇒ Object

Direct access to partial rendering.



45
46
47
# File 'lib/action_view/renderer/renderer.rb', line 45

def render_partial(context, options, &block) #:nodoc:
  _partial_renderer.render(context, options, block)
end

#render_template(context, options) ⇒ Object

Direct accessor to template rendering.



40
41
42
# File 'lib/action_view/renderer/renderer.rb', line 40

def render_template(context, options) #:nodoc:
  _template_renderer.render(context, options)
end