Rails中的自定义错误页面,用于特定操作

时间:2010-12-07 11:26:54

标签: ruby-on-rails

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

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

这样做的一种方法是:

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

这会有用吗?还有其他方式吗?

BTW:我正在使用rails 2.3.9。

谢谢, 埃雷兹

1 个答案:

答案 0 :(得分:0)

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

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

然后您需要的只是ApplicationController中的一种方法:

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

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

您可以进一步扩展此功能以添加对500错误的支持(在适当的情况下)但请记住,您将始终需要公共文件夹中的静态500.html,这会带来更大的问题。