class ActionController::Renderer

Action Controller Renderer

ActionController::Renderer allows you to render arbitrary templates without being inside a controller action.

You can get a renderer instance by calling renderer on a controller class:

ApplicationController.renderer
PostsController.renderer

and render a template by calling the render method:

ApplicationController.renderer.render template: "posts/show", assigns: { post: Post.first }
PostsController.renderer.render :show, assigns: { post: Post.first }

As a shortcut, you can also call render directly on the controller class itself:

ApplicationController.render template: "posts/show", assigns: { post: Post.first }
PostsController.render :show, assigns: { post: Post.first }