Ruby on rails 如何重新路由每一个没有';在Ruby on Rails中不存在或未经授权访问

Ruby on rails 如何重新路由每一个没有';在Ruby on Rails中不存在或未经授权访问,ruby-on-rails,ruby,Ruby On Rails,Ruby,基本上,我正在尝试将每个不存在的页面重新路由到我的公用文件夹下的404页面 到目前为止,我在我的应用程序_controller.rb上所做的工作将ff放置在: rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized rescue_from ActiveRecord::RecordNotFound, with: :show_404 但当我试图访问一个不存在的页面时,仍然是这样:http://localhost:3000

基本上,我正在尝试将每个不存在的页面重新路由到我的公用文件夹下的404页面

到目前为止,我在我的应用程序_controller.rb上所做的工作将ff放置在:

rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
rescue_from ActiveRecord::RecordNotFound, with: :show_404
但当我试图访问一个不存在的页面时,仍然是这样:
http://localhost:3000/dashboard/pagedo

它只是显示这个而不是404页面:


我需要做什么才能做到这一点?我需要在
routes.rb上设置一些代码吗

您可以定义一个匹配所有路由(),它需要放在
config/routes.rb
文件的底部

match '*path', via: :all, to: 'errors#page_not_found'
然后在控制器中处理它,方式与上面的异常处理相同:

class ErrorsController < ApplicationController
  def page_not_found
    show_404
  end
end
类错误控制器
如果您想将开发中所有不匹配的路线映射到404页面,Tom Lord的答案是好的;但是,在Rails中,所有不匹配的路由都映射到
public/404.html
中的404

RAILS\u ENV=production bin/RAILS s


从项目的根目录访问不存在的页面。这样,您就可以在开发中维护有用的路由匹配404帮助页面

一个小小的警告:在某些情况下,这可能会导致大量测试失败-例如,如果您正在显式测试某些路由不应解决。但例如,您可以只更新这些测试,以期望路由解析到此
页面\u not \u found
操作,或者测试实际请求是否得到404响应。