Class: ActionView::Renderer
- Defined in:
- actionview/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
-
#lookup_context ⇒ Object
Returns the value of attribute lookup_context.
Instance Method Summary collapse
-
#cache_hits ⇒ Object
:nodoc:.
-
#initialize(lookup_context) ⇒ Renderer
constructor
A new instance of Renderer.
-
#render(context, options) ⇒ Object
Main render entry point shared by Action View and Action Controller.
-
#render_body(context, options) ⇒ Object
Render but returns a valid Rack body.
-
#render_partial(context, options, &block) ⇒ Object
Direct access to partial rendering.
-
#render_partial_to_object(context, options, &block) ⇒ Object
:nodoc:.
-
#render_template(context, options) ⇒ Object
Direct access to template rendering.
-
#render_template_to_object(context, options) ⇒ Object
:nodoc:.
-
#render_to_object(context, options) ⇒ Object
:nodoc:.
Constructor Details
#initialize(lookup_context) ⇒ Renderer
Returns a new instance of Renderer.
18 19 20 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 18 def initialize(lookup_context) @lookup_context = lookup_context end |
Instance Attribute Details
#lookup_context ⇒ Object
Returns the value of attribute lookup_context
16 17 18 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 16 def lookup_context @lookup_context end |
Instance Method Details
#cache_hits ⇒ Object
:nodoc:
58 59 60 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 58 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 'actionview/lib/action_view/renderer/renderer.rb', line 23 def render(context, ) render_to_object(context, ).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 'actionview/lib/action_view/renderer/renderer.rb', line 40 def render_body(context, ) if .key?(:partial) [render_partial(context, )] else StreamingTemplateRenderer.new(@lookup_context).render(context, ) end end |
#render_partial(context, options, &block) ⇒ Object
Direct access to partial rendering.
54 55 56 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 54 def render_partial(context, , &block) # :nodoc: render_partial_to_object(context, , &block).body end |
#render_partial_to_object(context, options, &block) ⇒ Object
:nodoc:
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 66 def render_partial_to_object(context, , &block) # :nodoc: partial = [:partial] if String === partial collection = () if collection # Collection + Partial renderer = CollectionRenderer.new(@lookup_context, ) renderer.render_collection_with_partial(collection, partial, context, block) else if .key?(:object) # Object + Partial renderer = ObjectRenderer.new(@lookup_context, ) renderer.render_object_with_partial([:object], partial, context, block) else # Partial renderer = PartialRenderer.new(@lookup_context, ) renderer.render(partial, context, block) end end else collection = collection_from_object(partial) || () if collection # Collection + Derived Partial renderer = CollectionRenderer.new(@lookup_context, ) renderer.render_collection_derive_partial(collection, context, block) else # Object + Derived Partial renderer = ObjectRenderer.new(@lookup_context, ) renderer.render_object_derive_partial(partial, context, block) end end end |
#render_template(context, options) ⇒ Object
Direct access to template rendering.
49 50 51 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 49 def render_template(context, ) # :nodoc: render_template_to_object(context, ).body end |
#render_template_to_object(context, options) ⇒ Object
:nodoc:
62 63 64 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 62 def render_template_to_object(context, ) # :nodoc: TemplateRenderer.new(@lookup_context).render(context, ) end |
#render_to_object(context, options) ⇒ Object
:nodoc:
27 28 29 30 31 32 33 |
# File 'actionview/lib/action_view/renderer/renderer.rb', line 27 def render_to_object(context, ) # :nodoc: if .key?(:partial) render_partial_to_object(context, ) else render_template_to_object(context, ) end end |