fel*_*lix 10 ruby ruby-on-rails custom-error-pages ruby-on-rails-3
我正在尝试在我的网站中设置自定义错误页面.我遵循PerfectLine Blog的指导原则.
它适用于控制器存在的情况,但id不存在.例如,我有一个博客控制器,id 4不存在.它显示自定义错误页面
但在控制器本身不存在的情况下不存在.例如,如果我键入一些带有数字ID的随机控制器,则不会被我在应用程序控制器中设置的方法捕获,以重新路由自定义错误页面.在这种情况下,我得到一个
ActionController::RoutingError (No route matches "/randomcontrollername"):
在终端和rails附带的默认错误页面中.
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
unless Rails.application.config.consider_all_requests_local
rescue_from Exception, :with => :render_error
rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found
rescue_from ActionController::RoutingError, :with => :render_not_found
rescue_from ActionController::UnknownController, :with => :render_not_found
rescue_from ActionController::UnknownAction, :with => :render_not_found
end
private
def render_not_found(exception)
render :template => "/error/404.html.erb", :status => 404
end
def render_error(exception)
render :template => "/error/500.html.erb", :status => 500
end
end
Run Code Online (Sandbox Code Playgroud)
请你帮助我好吗.谢谢.
Rez*_*emi 18
您可以使用rails中的路由globbing执行此操作,它允许您使用通配符将任何操作与路径的任何部分进行匹配.
要捕获所有剩余路由,只需将低优先级路由映射定义为最后一个路由config/routes.rb
:
在Rails 3中:
match "*path" => 'error#handle404'
在Rails 2中:
map.connect "*path", :controller => 'error', :action => 'handle404'
params[:path]
将包含匹配的部分.
归档时间: |
|
查看次数: |
6672 次 |
最近记录: |