【问题标题】:Custom error page in Rails for specific actionsRails 中针对特定操作的自定义错误页面
【发布时间】:2010-12-07 22:28:53
【问题描述】:

我有一个控制器 MyController,他的某些操作无法返回完整的 HTML 页面,而只能返回没有 HTML/HEAD/BODY ...标签的内容。

默认错误页面是 500.html 等确实是完整的 HTML 页面,对于这些 MyController:actions 我需要以某种方式以非完整页面格式获取错误页面。

一种方法是:

覆盖 MyController 中的“render_optional_error_file()”并重定向,以防该操作是我对错误页面的不同版本(仅内容,非完整页面标签)的特殊操作之一。

这行得通吗?还有其他出路吗?

顺便说一句:我正在使用 rails 2.3.9。

谢谢, 埃雷兹

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    这是一个有点困难的问题,尤其是在 500 错误的情况下。由于 500 将在应用程序遇到错误时呈现,因此您不能/不应该拥有由控制器处理的动态页面 - 因为此控制器可能是问题的根源。

    但是,在 404 的情况下,您可以使用 404 操作设置 ErrorsController,并使用不同的布局,具体取决于请求是否为 XHR 请求。

    那么你需要的只是ApplicationController 中的一个方法,比如:

    def render_404
      render "errors/404", :status => 404
    end
    

    这将允许您在任何您喜欢的地方调用您的自定义错误处理程序。

    您也可以进一步扩展它以添加对 500 错误的支持(在适当的情况下),但请记住,您将始终需要公用文件夹中的静态 500.html,以防出现更大的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2015-09-10
      相关资源
      最近更新 更多