- A
- R
Constants
| RENDERERS | = | ActiveSupport::Deprecation::DeprecatedObjectProxy.new( @all, "ActionController::Renderers::RENDERERS is deprecated. Use ActionController.add_renderer, or ActionController.remove_renderer " \ "to add or remove renderers. If you need to check which renderers exists for an application, you can instead use " \ "ActionController::Renderers.all", ActionController.deprecator, ) |
Attributes
| [R] | all | Returns a Set of renderers name. By default, Action Controller adds the You can use |
Class Public methods
add(key, &block) Link
Adds a new renderer to call within controller actions. A renderer is invoked by passing its name as an option to AbstractController::Rendering#render. To create a renderer pass it a name and a block. The block takes two arguments, the first is the value paired with its key and the second is the remaining hash of options passed to render.
Create a csv renderer:
ActionController::Renderers.add :csv do |obj, options| filename = options[:filename] || 'data' str = obj.respond_to?(:to_csv) ? obj.to_csv : obj.to_s send_data str, type: Mime[:csv], disposition: "attachment; filename=#{filename}.csv" end
Note that we used Mime for the csv mime type as it comes with Rails. For a custom renderer, you’ll need to register a mime type with Mime::Type.register.
To use the csv renderer in a controller action:
def show @csvable = Csvable.find(params[:id]) respond_to do |format| format.html format.csv { render csv: @csvable, filename: @csvable.name } end end
remove(key) Link
This method is the opposite of add method.
To remove a csv renderer:
ActionController::Renderers.remove(:csv)
Instance Public methods
render_to_body(options) Link
Called by render in AbstractController::Rendering which sets the return value as the response_body.
If no renderer is found, super returns control to ActionView::Rendering.render_to_body, if present.