我已经看到很多关于 Rails 自定义错误视图的问题,但还没有找到解决我的问题的方法!
对于 404,现在我的 routes.rb 在底部有一个包罗万象的功能,可以重定向未知的命名路由,例如“webroot/adsfsdfasdf/”,但它因无效 id 而失败,例如“webroot/people/x1df1231” - ActiveRecord::RecordNotFound (找不到 ID=x1df1231 的人)
对于500,我还没有找到解决方案。
我目前无法升级 Rails,
我已经看到很多关于 Rails 自定义错误视图的问题,但还没有找到解决我的问题的方法!
对于 404,现在我的 routes.rb 在底部有一个包罗万象的功能,可以重定向未知的命名路由,例如“webroot/adsfsdfasdf/”,但它因无效 id 而失败,例如“webroot/people/x1df1231” - ActiveRecord::RecordNotFound (找不到 ID=x1df1231 的人)
对于500,我还没有找到解决方案。
我目前无法升级 Rails,
如果你想在生产环境中使用 apache 或 nginx,你可以在服务器配置文件中设置它,而不是在 rails 中。
我发现的最佳解决方案是使用“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。最初的包罗万象的路线有时会破坏应用程序。