在 Rails Metal Controller 中返回 404 状态时,我们可以跳过 Rails 调用链吗?

发布于 2024-12-19 18:48:38 字数 161 浏览 1 评论 0原文

我正在为我的 Rails 应用程序编写一个 API,并且我想返回 404 代码,例如,如果找不到用户。但是每当我返回 404 代码时,rails 就会接管并最终给我一个带有 200 状态(路由错误)的错误页面。有没有办法返回 404 并跳过调用链?使用金属控制器...我正在使用 Rails 2.3.5。谢谢

I am writing a API for my rails app and I'd like to return the 404 code, for example, if user is not found. But whenever I return the 404 code rails takes over and end up giving me an error page with a 200 status(routing error). Is there a way to return the 404 and skip the call chain? using metal controller... I'm using Rails 2.3.5. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

So尛奶瓶 2024-12-26 18:48:38

您可以执行类似的操作并控制要使用的状态。此外,您还可以控制向用户显示 404 的布局/模板。这应该让您负责使用什么状态,而不是强行使用 Rails 认为您需要的状态。

#app/controllers/some_controller.rb
class SomeController < ApplicationController
  def index
    @user = User.find_by(id: params[:user_id])
    return custom_404_page unless @user
  end
end

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  def custom_404_page
    render :template => 'layouts/custom_404_page', status: 404
  end
end

You can do something like this and control the status to use. And additionally you can control what layout/template to display the 404 to the user. This should let you take charge of what status to use and not be strong-armed into using what rails thinks you need.

#app/controllers/some_controller.rb
class SomeController < ApplicationController
  def index
    @user = User.find_by(id: params[:user_id])
    return custom_404_page unless @user
  end
end

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  def custom_404_page
    render :template => 'layouts/custom_404_page', status: 404
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文