質問を書いているときにこれに出くわし、答えを見つけました-これは一般的なユースケースであるため、共有したいと思いました. 少し前まで、次の問題がありました。
次のコードでエラー コントローラーを使用して、Rails アプリケーション用のカスタム 404 ページをセットアップしました。
def index
render "errors/index", status: 404
end
存在しないルートがアクセスされるたびに、この 404 ページをレンダリングするようにルートを設定しました。
devise_for :users
get "errors/index", as: :error
get "*not_found", to: "errors#index" # this is the important line
root to: "welcome#index"
そして実際、それは機能します。ただし、何らかの理由で、これに対する私の仕様は機能しません。
it "renders 404 on unknown route" do
get("/thisrouteiswrong").should route_to("errors#index")
end
ターミナルで生成される出力は次のとおりです。
The recognized options <{"controller"=>"errors", "action"=>"index", "not_found"=>"thisrouteiswrong"}> did not match <{"controller"=>"errors", "action"=>"index"}>, difference: <{"not_found"=>"thisrouteiswrong"}>.
<{"controller"=>"errors", "action"=>"index"}> expected but was
<{"controller"=>"errors", "action"=>"index", "not_found"=>"thisrouteiswrong"}>.