aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2007-09-20 23:34:07 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2007-09-20 23:34:07 +0000
commit1373991dd8feacb0c09a6115a271777810807668 (patch)
tree59aa13a830091d5c440d37928f69ff49d9f4ff1a /actionpack/lib
parente86d1cd621ca62af6f71b04032b1e07a66c06bb6 (diff)
downloadrails-1373991dd8feacb0c09a6115a271777810807668.tar.gz
rails-1373991dd8feacb0c09a6115a271777810807668.tar.bz2
rails-1373991dd8feacb0c09a6115a271777810807668.zip
Added that render :json will automatically call .to_json unless its being passed a string [DHH] Added Mime::Type.register_alias for dealing with different formats using the same mime type [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7520 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib')
-rwxr-xr-xactionpack/lib/action_controller/base.rb1
-rw-r--r--actionpack/lib/action_controller/mime_type.rb10
2 files changed, 9 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index 9a3ab651ac..4630103119 100755
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -826,6 +826,7 @@ module ActionController #:nodoc:
render_for_text(xml.respond_to?(:to_xml) ? xml.to_xml : xml, options[:status])
elsif json = options[:json]
+ json = json.to_json unless json.is_a?(String)
json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
response.content_type = Mime::JSON
render_for_text(json, options[:status])
diff --git a/actionpack/lib/action_controller/mime_type.rb b/actionpack/lib/action_controller/mime_type.rb
index 7c7faefa46..29b7723d76 100644
--- a/actionpack/lib/action_controller/mime_type.rb
+++ b/actionpack/lib/action_controller/mime_type.rb
@@ -52,12 +52,18 @@ module Mime
EXTENSION_LOOKUP[extension]
end
- def register(string, symbol, mime_type_synonyms = [], extension_synonyms = [])
+ # Registers an alias that's not usd on mime type lookup, but can be referenced directly. Especially useful for
+ # rendering different HTML versions depending on the user agent, like an iPhone.
+ def register_alias(string, symbol, extension_synonyms = [])
+ register(string, symbol, [], extension_synonyms, true)
+ end
+
+ def register(string, symbol, mime_type_synonyms = [], extension_synonyms = [], skip_lookup = false)
Mime.send :const_set, symbol.to_s.upcase, Type.new(string, symbol, mime_type_synonyms)
SET << Mime.send(:const_get, symbol.to_s.upcase)
- ([string] + mime_type_synonyms).each { |string| LOOKUP[string] = SET.last }
+ ([string] + mime_type_synonyms).each { |string| LOOKUP[string] = SET.last } unless skip_lookup
([symbol.to_s] + extension_synonyms).each { |ext| EXTENSION_LOOKUP[ext] = SET.last }
end