Class: ActionView::Renderer
Relationships & Source Files | |
Inherits: | Object |
Defined in: | actionview/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.
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.
Class Method Summary
- .new(lookup_context) ⇒ Renderer constructor
Instance Attribute Summary
Instance Method Summary
-
#render(context, options)
Main render entry point shared by Action View and Action Controller.
-
#render_body(context, options)
Render but returns a valid
::Rack
body.
Constructor Details
.new(lookup_context) ⇒ Renderer
# File 'actionview/lib/action_view/renderer/renderer.rb', line 16
def initialize(lookup_context) @lookup_context = lookup_context end
Instance Attribute Details
#lookup_context (rw)
[ GitHub ]# File 'actionview/lib/action_view/renderer/renderer.rb', line 14
attr_accessor :lookup_context
Instance Method Details
#render(context, options)
Main render entry point shared by Action View and Action Controller.
# File 'actionview/lib/action_view/renderer/renderer.rb', line 21
def render(context, ) if .key?(:partial) render_partial(context, ) else render_template(context, ) end end
#render_body(context, options)
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.
# File 'actionview/lib/action_view/renderer/renderer.rb', line 34
def render_body(context, ) if .key?(:partial) [render_partial(context, )] else StreamingTemplateRenderer.new(@lookup_context).render(context, ) end end