加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:30:11 所属栏目:百科 来源:网络整理
导读:我正在尝试在我的网站上设置自定义错误页面.我正在遵循 PerfectLine Blog的准则. 它在控制器存在的情况下起作用,但该ID不存在.例如,我有一个博客控制器,id 4不存在.它显示自定义错误页面 但是在控制器本身不存在的情况下不存在.例如,如果我键入一些带有数字I
我正在尝试在我的网站上设置自定义错误页面.我正在遵循 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]将包含匹配的部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读