Encapsulates the notion of a mime type. Can be used at render time, for example, with:
class PostsController < ActionController::Base
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html
format.ics { render body: @post.to_ics, mime_type: Mime::Type.lookup("text/calendar") }
format.xml { render xml: @post }
end
end
end
- #
- A
- E
- H
- L
- N
- P
- R
- T
- U
TRAILING_STAR_REGEXP | = | /^(text|application)\/\*/ |
PARAMETER_SEPARATOR_REGEXP | = | /;\s*\w+="?\w+"?/ |
[R] | hash | |
[R] | string | TODO Change this to private once we've dropped Ruby 2.2 support. Workaround for Ruby 2.2 “private attribute?” warning. |
[R] | symbol | |
[R] | synonyms | TODO Change this to private once we've dropped Ruby 2.2 support. Workaround for Ruby 2.2 “private attribute?” warning. |
# File actionpack/lib/action_dispatch/http/mime_type.rb, line 169 def parse(accept_header) if !accept_header.include?(",") accept_header = accept_header.split(PARAMETER_SEPARATOR_REGEXP).first parse_trailing_star(accept_header) || [Mime::Type.lookup(accept_header)].compact else list, index = [], 0 accept_header.split(",").each do |header| params, q = header.split(PARAMETER_SEPARATOR_REGEXP) next unless params params.strip! next if params.empty? params = parse_trailing_star(params) || [params] params.each do |m| list << AcceptItem.new(index, m.to_s, q) index += 1 end end AcceptList.sort! list end end
For an input of 'text'
, returns [Mime[:json],
Mime[:xml], Mime[:ics], Mime[:html], Mime[:css], Mime[:csv], Mime[:js],
Mime[:yaml], Mime[:text]
.
For an input of 'application'
, returns
[Mime[:html], Mime[:js], Mime[:xml], Mime[:yaml], Mime[:atom],
Mime[:json], Mime[:rss], Mime[:url_encoded_form]
.
# File actionpack/lib/action_dispatch/http/mime_type.rb, line 155 def register(string, symbol, mime_type_synonyms = [], extension_synonyms = [], skip_lookup = false) new_mime = Type.new(string, symbol, mime_type_synonyms) SET << new_mime ([string] + mime_type_synonyms).each { |str| LOOKUP[str] = new_mime } unless skip_lookup ([symbol] + extension_synonyms).each { |ext| EXTENSION_LOOKUP[ext.to_s] = new_mime } @register_callbacks.each do |callback| callback.call(new_mime) end new_mime end
Registers an alias that's not used on mime type lookup, but can be referenced directly. Especially useful for rendering different HTML versions depending on the user agent, like an iPhone.
This method is opposite of register method.
To unregister a MIME type:
Mime::Type.unregister(:mobile)