class ActionView::Renderer

Parent:
Object

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

lookup_context[RW]

Public Class Methods

new(lookup_context) Show source
# File actionview/lib/action_view/renderer/renderer.rb, line 14
def initialize(lookup_context)
  @lookup_context = lookup_context
end

Public Instance Methods

render(context, options) Show source
# 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.

render_body(context, options) Show source
# 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.