diff --git a/lib/sinatra/respond_to.rb b/lib/sinatra/respond_to.rb index bca5029..0946d24 100644 --- a/lib/sinatra/respond_to.rb +++ b/lib/sinatra/respond_to.rb @@ -215,7 +215,11 @@ def wants.method_missing(type, *args, &handler) request.accept.each do |mime_type| break if alt = wants.keys.detect {|k| ::Sinatra::Base.mime_type(k) == mime_type} end - format alt if alt + if alt + format alt + elsif request.accept.include?("*.*") + format settings.default_content + end end raise UnhandledFormat if wants[format].nil? wants[format].call diff --git a/spec/extension_spec.rb b/spec/extension_spec.rb index b859584..0fd31d6 100644 --- a/spec/extension_spec.rb +++ b/spec/extension_spec.rb @@ -186,6 +186,12 @@ def mime_type(sym) last_response.body.should =~ %r{'Hiya from javascript'} last_response.content_type.should include(mime_type(:js)) end + + it "should use default_content when the first Accept header includes the wildcard" do + get "/resource", {}, {'HTTP_ACCEPT' => "text/csv;q=0.9,*.*;q=0.8"} + last_response.body.should =~ %r{\s*\s*Hello from HTML\s*\s*} + last_response.content_type.should include(mime_type(:html)) + end end describe "routes not using respond_to" do