首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails 4中的rescue_from操作控制器::路由错误

Rails 4中的rescue_from操作控制器::路由错误
EN

Stack Overflow用户
提问于 2014-09-15 13:33:03
回答 1查看 23.9K关注 0票数 25

我得到了以下错误:

代码语言:javascript
复制
ActionController::RoutingError (No route matches [GET] "/images/favicon.ico")

我想要显示不存在的链接的error404页面。

我怎样才能做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2014-09-15 14:34:57

application_controller.rb中添加以下内容:

代码语言:javascript
复制
  # You want to get exceptions in development, but not in production.
  unless Rails.application.config.consider_all_requests_local
    rescue_from ActionController::RoutingError, with: -> { render_404  }
  end

  def render_404
    respond_to do |format|
      format.html { render template: 'errors/not_found', status: 404 }
      format.all { render nothing: true, status: 404 }
    end
  end

我通常也会解救以下异常,但这取决于你:

代码语言:javascript
复制
rescue_from ActionController::UnknownController, with: -> { render_404  }
rescue_from ActiveRecord::RecordNotFound,        with: -> { render_404  }

创建errors控制器:

代码语言:javascript
复制
class ErrorsController < ApplicationController
  def error_404
    render 'errors/not_found'
  end
end

然后在routes.rb

代码语言:javascript
复制
  unless Rails.application.config.consider_all_requests_local
    # having created corresponding controller and action
    get '*path', to: 'errors#error_404', via: :all
  end

最后一件事是在/views/errors/下创建not_found.html.haml (或您使用的任何模板引擎

代码语言:javascript
复制
  %span 404
  %br
  Page Not Found
票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25841377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档