2010-12-07 71 views
1

我有一个控制器MyController,他的一些操作无法返回完整的HTML页面,但只有没有HTML/HEAD/BODY ...标记的内容。Rails中针对特定动作的自定义错误页面

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

这样做的一个方法是:

覆盖“render_optional_error_file()”的内部myController的和重定向的情况下的动作仅是一个我特别行动,以不同版本的错误页面(含量,非全页标签)。

这项工作?任何其他出路?

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

感谢, 埃雷兹

回答

0

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

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

然后,所有你需要的是在你的ApplicationController等的方法:

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

,这将使你打电话给你的自定义错误处理程序你喜欢的地方。

你可以扩展这进一步增加了500错误的支持太(如适用),但请记住,你永远需要静态500.html在公共文件夹,柜面一个更大的问题。