aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/http/request.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_dispatch/http/request.rb')
-rwxr-xr-xactionpack/lib/action_dispatch/http/request.rb18
1 files changed, 16 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/http/request.rb b/actionpack/lib/action_dispatch/http/request.rb
index 13ff049a97..140feb9a68 100755
--- a/actionpack/lib/action_dispatch/http/request.rb
+++ b/actionpack/lib/action_dispatch/http/request.rb
@@ -3,7 +3,9 @@ require 'stringio'
require 'strscan'
require 'active_support/memoizable'
+require 'active_support/core_ext/array/wrap'
require 'active_support/core_ext/hash/indifferent_access'
+require 'active_support/core_ext/object/tap'
module ActionDispatch
class Request < Rack::Request
@@ -173,9 +175,21 @@ module ActionDispatch
def formats
if ActionController::Base.use_accept_header
- Array(Mime[parameters[:format]] || accepts)
+ if param = parameters[:format]
+ Array.wrap(Mime[param])
+ else
+ accepts.dup
+ end.tap do |ret|
+ if defined?(ActionController::Http)
+ if ret == ONLY_ALL
+ ret.replace Mime::SET
+ elsif all = ret.index(Mime::ALL)
+ ret.delete_at(all) && ret.insert(all, *Mime::SET)
+ end
+ end
+ end
else
- [format]
+ [format] + Mime::SET
end
end