ruby-on-rails – 自定义错误页面 – Ruby on Rails

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 自定义错误页面 – Ruby on Rails前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在我的网站上设置自定义错误页面.我正在遵循 PerfectLine Blog的准则.

它在控制器存在的情况下起作用,但该ID不存在.例如,我有一个博客控制器,id 4不存在.它显示自定义错误页面

但是在控制器本身不存在的情况下不存在.例如,如果我键入一些带有数字ID的随机控制器不被我在应用程序控制器中设置的方法所捕获,以重新路由自定义错误页面.在这种情况下,我得到一个

ActionController :: RoutingError(无路由匹配“/ randomcontrollername”):

在终端和带有rails的默认错误页面.

application_controller.rb

  1. class ApplicationController < ActionController::Base
  2. protect_from_forgery
  3.  
  4. unless Rails.application.config.consider_all_requests_local
  5. rescue_from Exception,:with => :render_error
  6. rescue_from ActiveRecord::RecordNotFound,:with => :render_not_found
  7. rescue_from ActionController::RoutingError,:with => :render_not_found
  8. rescue_from ActionController::UnknownController,:with => :render_not_found
  9. rescue_from ActionController::UnknownAction,:with => :render_not_found
  10. end
  11.  
  12. private
  13. def render_not_found(exception)
  14. render :template => "/error/404.html.erb",:status => 404
  15. end
  16.  
  17. def render_error(exception)
  18. render :template => "/error/500.html.erb",:status => 500
  19. end
  20.  
  21. end

你可以帮我吗.谢谢.

解决方法

您可以使用rails中的路径集合来实现,它允许您使用通配符将任何操作与路由的任何部分进行匹配.

要捕获所有剩余的路由,只需将低优先级路由映射定义为config / routes.rb中的最后一条路由:

在Rails 3:
match“* path”=> ‘错误#handle404

在Rails 2:
map.connect“* path”,:controller => ‘error’,:action => ‘handle404

params [:path]将包含匹配的部分.

猜你在找的Ruby相关文章