class

ActionController::Renderer

v5.0.0.1 - Show latest stable - Superclass: Object

ActionController::Renderer allows to render arbitrary templates without requirement of being in controller actions.

You get a concrete renderer class by invoking ActionController::Base#renderer. For example,

ApplicationController.renderer

It allows you to call method #render directly.

ApplicationController.renderer.render template: '...'

You can use this shortcut in a controller, instead of the previous example:

ApplicationController.render template: '...'

#render allows you to use the same options that you can use when rendering in a controller. For example,

FooController.render :action, locals: { ... }, assigns: { ... }

The template will be rendered in a Rack environment which is accessible through ActionController::Renderer#env. You can set it up in two ways:

  • by changing renderer defaults, like

    ApplicationController.renderer.defaults # => hash with default Rack environment
    
  • by initializing an instance of renderer by passing it a custom environment.

    ApplicationController.renderer.new(method: 'post', https: true)

Constants

DEFAULTS = {\nhttp_host: 'example.org',\nhttps: false,\nmethod: 'get',\nscript_name: '',\ninput: ''\n}.freeze

IDENTITY = ->(_) { _ }

RACK_KEY_TRANSLATION = {\nhttp_host: 'HTTP_HOST',\nhttps: 'HTTPS',\nmethod: 'REQUEST_METHOD',\nscript_name: 'SCRIPT_NAME',\ninput: 'rack.input'\n}

RACK_VALUE_TRANSLATION = {\nhttps: ->(v) { v ? 'on' : 'off' },\nmethod: ->(v) { v.upcase },\n}

Attributes

[R]controller
[R]defaults

Files

  • actionpack/lib/action_controller/renderer.rb