0

我已经看到很多关于 Rails 自定义错误视图的问题,但还没有找到解决我的问题的方法!

对于 404,现在我的 routes.rb 在底部有一个包罗万象的功能,可以重定向未知的命名路由,例如“webroot/adsfsdfasdf/”,但它因无效 id 而失败,例如“webroot/people/x1df1231” - ActiveRecord::RecordNotFound (找不到 ID=x1df1231 的人)

对于500,我还没有找到解决方案。

我目前无法升级 Rails,

4

2 回答 2

1

如果你想在生产环境中使用 apache 或 nginx,你可以在服务器配置文件中设置它,而不是在 rails 中。

于 2012-11-03T05:19:19.127 回答
0

我发现的最佳解决方案是使用“around_filter”

在 application_controller 之上:

around_filter :handle_errors

然后在下面

def handle_errors
    yield
    rescue => e
        logger.debug "\n ====== ERROR ====== \n\n #{e.message} \n\n #{e.annoted_source_code} \n\n #{e.backtrace} \n\n ================= \n\n"
        if e.is_a?(ActiveRecord::RecordNotFound)
            render '/errors/e404'
        else
            render '/errors/e500'
        end
end

其中'/errors/e404' 是一个模板,例如views/errors/e404.html.haml 没有修改routes.rb。最初的包罗万象的路线有时会破坏应用程序。

于 2012-11-02T17:11:15.023 回答