Class: ActionView::Renderer

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

Overview

Action View Renderer

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

The Renderer will parse the options from the render or render_body method and render a partial or a template based on the options. The TemplateRenderer and PartialRenderer objects are wrappers which do all the setup and logic necessary to render a view and a new object is created each time render is called.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lookup_context) ⇒ Renderer

Returns a new instance of Renderer.



18
19
20
# File 'lib/action_view/renderer/renderer.rb', line 18

def initialize(lookup_context)
  @lookup_context = lookup_context
end

Instance Attribute Details

#lookup_contextObject

Returns the value of attribute lookup_context.



16
17
18
# File 'lib/action_view/renderer/renderer.rb', line 16

def lookup_context
  @lookup_context
end

Instance Method Details

#cache_hitsObject

:nodoc:



52
53
54
# File 'lib/action_view/renderer/renderer.rb', line 52

def cache_hits # :nodoc:
  @cache_hits ||= {}
end

#render(context, options) ⇒ Object

Main render entry point shared by Action View and Action Controller.



23
24
25
# File 'lib/action_view/renderer/renderer.rb', line 23

def render(context, options)
  render_to_object(context, options).body
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.



40
41
42
43
44
45
46
# File 'lib/action_view/renderer/renderer.rb', line 40

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

:nodoc:



48
49
50
# File 'lib/action_view/renderer/renderer.rb', line 48

def render_partial(context, options, &block) # :nodoc:
  render_partial_to_object(context, options, &block).body
end

#render_to_object(context, options) ⇒ Object

:nodoc:



27
28
29
30
31
32
33
# File 'lib/action_view/renderer/renderer.rb', line 27

def render_to_object(context, options) # :nodoc:
  if options.key?(:partial)
    render_partial_to_object(context, options)
  else
    render_template_to_object(context, options)
  end
end