class ActionView::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.
Attributes
Public Class Methods
# File actionview/lib/action_view/renderer/renderer.rb, line 14 def initialize(lookup_context) @lookup_context = lookup_context end
Public Instance Methods
# File actionview/lib/action_view/renderer/renderer.rb, line 19 def render(context, options) if 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
Main render entry point shared by AV and AC.
# File actionview/lib/action_view/renderer/renderer.rb, line 36 def render_body(context, options) if options.key?(:partial) [render_partial(context, options)] else StreamingTemplateRenderer.new(@lookup_context).render(context, options) end end
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.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.