diff --git a/actionpack/lib/action_controller/metal/rendering.rb b/actionpack/lib/action_controller/metal/rendering.rb
index <HASH>..<HASH> 100644
--- a/actionpack/lib/action_controller/metal/rendering.rb
+++ b/actionpack/lib/action_controller/metal/rendering.rb
@@ -6,7 +6,7 @@ module ActionController
 
     # Before processing, set the request formats in current controller formats.
     def process_action(*) #:nodoc:
-      self.formats = request.formats.map { |x| x.ref }
+      self.formats = request.formats.select { |x| !x.nil? }.map(&:ref)
       super
     end
 
diff --git a/actionpack/lib/action_dispatch/http/mime_type.rb b/actionpack/lib/action_dispatch/http/mime_type.rb
index <HASH>..<HASH> 100644
--- a/actionpack/lib/action_dispatch/http/mime_type.rb
+++ b/actionpack/lib/action_dispatch/http/mime_type.rb
@@ -306,12 +306,16 @@ module Mime
       method.to_s.ends_with? '?'
     end
   end
-  
+
   class NullType
     def nil?
       true
     end
 
+    def respond_to_missing?(method, include_private = false)
+      method.to_s.ends_with? '?'
+    end
+
     private
     def method_missing(method, *args)
       false if method.to_s.ends_with? '?'
Reverts rendering behavior when format is unknown

If a request has unknown format (eg. /foo.bar), the renderer
fallbacks to default format.

This patch reverts Rails <I> behavior after c<I>db commit.

Fixes issue #<I>.