class method
self.add
Ruby on Rails 3.1.12
Since v3.0.20Signature
self.add(key, &block)
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.
Example
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::CSV 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
To use renderers and their mime types in more concise ways, see ActionController::MimeResponds::ClassMethods.respond_to and ActionController::MimeResponds#respond_with
Parameters
-
keyreq -
blockblock
Source
# File actionpack/lib/action_controller/metal/renderers.rb, line 80
def self.add(key, &block)
define_method("_render_option_#{key}", &block)
RENDERERS[key] = block
end
Defined in actionpack/lib/action_controller/metal/renderers.rb line 80
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionController::Renderers