From 71706f21c28f5ae623ee69810fe26a34fb79b446 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Sun, 9 Apr 2017 08:39:41 -0400 Subject: [PATCH] Ignore implied formats for catch all route requests (#1340) A request to `/test` would show the custom 404 page, but a request to `/test.test` would return a 404 with an empty body. This change ignores the format on incoming catch all route requests, so that the html 404 page is returned on these requests. --- config/routes.rb | 5 ++++- spec/requests/catch_all_route_request_spec.rb | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 spec/requests/catch_all_route_request_spec.rb diff --git a/config/routes.rb b/config/routes.rb index 9cbecf07797..66b0ed8303a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -194,5 +194,8 @@ Rails.application.routes.draw do root 'home#index' - match '*unmatched_route', via: :all, to: 'application#raise_not_found' + match '*unmatched_route', + via: :all, + to: 'application#raise_not_found', + format: false end diff --git a/spec/requests/catch_all_route_request_spec.rb b/spec/requests/catch_all_route_request_spec.rb new file mode 100644 index 00000000000..22ce1cf59f6 --- /dev/null +++ b/spec/requests/catch_all_route_request_spec.rb @@ -0,0 +1,21 @@ +require "rails_helper" + +describe "The catch all route" do + describe "with a simple value" do + it "returns a 404 page as html" do + get "/test" + + expect(response.status).to eq 404 + expect(response.content_type).to eq "text/html" + end + end + + describe "with an implied format" do + it "returns a 404 page as html" do + get "/test.test" + + expect(response.status).to eq 404 + expect(response.content_type).to eq "text/html" + end + end +end