如何制作页面错误404?

时间:2015-07-08 06:25:45

标签: ruby-on-rails ruby-on-rails-4

请提供帮助。

UsersController:

class UsersController < ApplicationController
  before_action :set_user, only: [:show]

  ........
  .........

  def show
    ......
  end

  private
    def set_user
      @user = User.find_by_id(params[:id])
      render_404 unless @user
    end
end

ApplicattionController:

class ApplicationController < ActionController::Base
  before_action :set_locale

  protect_from_forgery with: :exception

  private

    def render_404
       render file: "public/404.html", status: 404
    end  
end

http://localhost:3000/users/24/我看到了一个用户页面。

http://localhost:3000/users/24242424/我看到一个页面错误404。

http://localhost:3000/qwertyghjfd我看到一条错误消息:

  

路由错误没有路由匹配[GET]

我需要在http://localhost:3000/qwertyghjfd我看到一个页面error404

2 个答案:

答案 0 :(得分:0)

在ApplicationController中,您可以在出现路由错误时调用render_404

rescue_from ActionController::RoutingError, :with => : render_404

答案 1 :(得分:0)

来自official Rails guides

  

默认情况下,生产应用程序将呈现404或500错误消息。这些消息包含在公用文件夹中的静态HTML文件中,分别位于404.html和500.html中。

为了响应 production 环境中的路由错误,将呈现404.html文件(默认情况下)。在开发中,您应该看到实际的错误消息(当然,除非您覆盖默认行为 - 指南将告诉您如何)。