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.

Methods

Attributes

[RW] lookup_context

Class Public methods

new(lookup_context)

📝 Source code
# File actionview/lib/action_view/renderer/renderer.rb, line 16
    def initialize(lookup_context)
      @lookup_context = lookup_context
    end
🔎 See on GitHub

Instance Public methods

render(context, options)

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

📝 Source code
# File actionview/lib/action_view/renderer/renderer.rb, line 21
    def render(context, options)
      if options.key?(:partial)
        render_partial(context, options)
      else
        render_template(context, options)
      end
    end
🔎 See on GitHub

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.

📝 Source code
# File actionview/lib/action_view/renderer/renderer.rb, line 34
    def render_body(context, options)
      if options.key?(:partial)
        [render_partial(context, options)]
      else
        StreamingTemplateRenderer.new(@lookup_context).render(context, options)
      end
    end
🔎 See on GitHub