我有一个控制器MyController,他的一些动作无法返回完整的HTML页面,只能返回没有HTML / HEAD / BODY ...标签的内容。
默认错误页面是500.html等。确实是完整的HTML页面,对于这些MyController:我需要以某种方式以非整页格式获取错误页面。
这样做的一种方法是:
覆盖MyController中的“render_optional_error_file()”并重定向,以防该动作是我对错误页面的不同版本(仅限内容,非整页标签)的特殊操作。
这会有用吗?还有其他方式吗?
BTW:我正在使用rails 2.3.9。
谢谢, 埃雷兹
答案 0 :(得分:0)
这是一个很难的问题,特别是在500错误的情况下。由于500将在应用程序遇到并出现错误时呈现,因此您不能/不应该拥有由控制器处理的动态页面 - 因为此控制器可能是问题的根源。
但是,对于404,您可以使用404操作设置ErrorsController,并使用不同的布局,具体取决于请求是否是XHR请求。
然后您需要的只是ApplicationController
中的一种方法:
def render_404
render "errors/404", :status => 404
end
这将允许您在任何地方调用自定义错误处理程序。
您可以进一步扩展此功能以添加对500错误的支持(在适当的情况下)但请记住,您将始终需要公共文件夹中的静态500.html,这会带来更大的问题。