gpt4 book ai didi

ruby-on-rails - 如何从 Rails 5 中的 AbstractController::ActionNotFound 异常中拯救出来?

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:58 26 4
gpt4 key购买 nike

在我的应用程序 Controller 中,我正在从一堆不同的异常中解救出来,以毫无问题地显示我自己的错误页面。例如:

rescue_from ActiveRecord::RecordNotFound, with: :not_found
rescue_from ActionView::MissingTemplate, with: :server_error
# etc...

但是以下不起作用:

rescue_from AbstractController::ActionNotFound, with: :not_found

我的理解是因为在我们到达我的应用程序 Controller 之前在 AbstractController 中引发了异常,以便能够挽救它。

我也希望能够从这个异常中解救出来,但我一直无法找到有效的解决方案。
我尝试通过以下方式向路由器发送异常:

配置/应用程序.rb

config.exceptions_app = self.routes

在 config/routes.rb 中

get "*any", via: :all, to: "application#not_found"

这不起作用,似乎是 Rails 3 和 4 最常见的答案。我正在使用 Rails 5.0.0,感谢任何帮助

最佳答案

聚会迟到了,但我是在寻找一种方法来提供“静态文件”的时候来到这里的,它仍然使用我的布局,但如果有任何我没有的请求,就会显示 404 页面,以防其他人一直在寻找相同的东西,这就是我所做的:

我最终制作了一个新的 Controller ,其中只有一个 Action 来处理这两种情况:

# app/controllers/static_controller.rb
class StaticController < ApplicationController
def static_or_404
render params[:static]
rescue ActionView::MissingTemplate
render :not_found
end
end

然后在我的路由的最底部:

# config/routes.rb
get '*static', to: 'static#static_or_404'

在您的情况下,您可以跳过静态部分,这样您就不必进行救援,只需在操作中调用 not_found 即可。对于不同的用例,您可以重定向到根目录或其他内容。

关于ruby-on-rails - 如何从 Rails 5 中的 AbstractController::ActionNotFound 异常中拯救出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39412845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com