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

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

你可以帮我吗.谢谢.

解决方法

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

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

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

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

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

原文链接:https://www.f2er.com/ruby/265975.html

猜你在找的Ruby相关文章