【问题标题】:How to make 404 page ruby?如何制作 404 页红宝石?
【发布时间】:2019-05-27 14:08:30
【问题描述】:

当我尝试转到 site.ru/gdfgsdf 页面时,它说:

Routing Error
No route matches [GET] "/gfdg"
Rails.root: /site.ru

Application Trace | Framework Trace | Full Trace
Routes
Routes match in priority from top to bottom

但是,当我尝试转到 site.ru/404 页面时,它显示的是我的工作 404 页面。

如果没有在routs注册,怎么给大家做一个404页面?

【问题讨论】:

  • 我已经成功了。这不是一个解决方案:(
  • 请发布您的路线文件。它在开发中有效但在生产中无效?在更改 application.rb 文件后,您是否重新启动了 Rails 服务器?
  • 我的路线:匹配'/404',到:'errors#not_found',通过::所有匹配'/422',到:'errors#unacceptable',通过::所有匹配'/ 500',至:'errors#internal_server_error',通过::所有匹配'/404',至:'errors#not_found',通过::所有匹配'/422',至:'errors#unacceptable',通过::全部匹配 '/500',到:'errors#internal_server_error',通过::all
  • /404 对 Rails 没有任何意义。您可以通过添加默认路由来捕获所有未命中的信息,例如 /*path 或在 ApplicationController 中使用 rescue_from

标签: ruby-on-rails ruby routing http-status-code-404


【解决方案1】:

这是开发模式下的默认行为。在开发环境中,显示路由错误,以便开发人员可以注意到它们并修复它们。 如果您想查看 404 页面,请在生产模式下启动服务器并检查它。

$ rails s -e production # script/rails s -e production

或者,如果您不想始终在 prod 模式下运行服务器,请尝试在您的 ApplicationController 中执行此操作:

rescue_from ActiveRecord::RecordNotFound, :with => :rescue_404
rescue_from ActionController::RoutingError, :with => :rescue_404

def rescue_404
  #custom behavior
end

【讨论】:

    【解决方案2】:

    您可以很容易地做到这一点,例如按照步骤操作

    第 1 步:运行以下命令

    rails generate controller errors not_found
    

    第 2 步:打开并修改此控制器,如下所示

    class ErrorsController < ApplicationController
        def not_found
            render(:status => 404)
        end
    end
    

    第三步:更新如下路线

    match "/404", to: "errors#not_found", via: :all
    

    第四步:更新配置文件application.rb

    config.exceptions_app = self.routes
    

    第 5 步:从公用文件夹中删除默认模板,例如 404.html

    然后重启你的服务器然后测试localhost:3000/404它会自动在production服务器上运行

    详情可以看this blog post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 2019-08-09
      相关资源
      最近更新 更多