在我的rails应用程序中,我定义了路由,以便用户可以访问http://mydomain.com/qwe2等记录
但是如果他们输错了"qwe2",他们会获得500页.我认为404会更合适.
如何更改显示的错误页面?谢谢
在底部创建一个包罗万象的路线config/routes.rb:
map.connect '*path', :controller => 'unknown_route'
Run Code Online (Sandbox Code Playgroud)
然后在app/controllers/unknown_route_controller你可以做:
class UnknownRouteController < ApplicationController
def index
render :file => "#{Rails.root}/public/404.html", :layout => false,
:status => 404
end
end
Run Code Online (Sandbox Code Playgroud)
这将为您提供任何未知路线的404页面.
获得500代码的唯一原因是您的应用程序抛出异常.这可能是由于缺少路线,您没有任何与之匹配的定义,或者因为您的控制器或视图已崩溃.
在生产环境中,您可能希望捕获应用程序生成的所有错误,并在适当的情况下显示更好的错误屏幕,或者如果需要,还可以显示"未找到"页面.
例如,一个强力捕获所有异常捕获器可能被定义为:
class ApplicationController < ActionController::Base
if (Rails.env.production?)
rescue_from Object, :with => :uncaught_exception_rescue
end
protected
def uncaught_exception_rescue(exception)
render(:partial => 'errors/not_found', :status => :not_found)
end
end
Run Code Online (Sandbox Code Playgroud)
如果您想知道何时执行此操作,则返回404类型错误很容易:
render(:partial => 'errors/not_found', :status => :not_found)
Run Code Online (Sandbox Code Playgroud)
确保您有某种默认路线,否则您将始终收到这些错误.通常这是通过在routes.rb的最后添加一个catch-all路由来完成的:
map.default '/*path', :controller => 'default', :action => 'show'
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用此请求执行任何操作.
| 归档时间: |
|
| 查看次数: |
2210 次 |
| 最近记录: |