Как сделать 404 страницы ruby? - PullRequest
       25

Как сделать 404 страницы ruby?

0 голосов
/ 30 декабря 2018

Когда я пытаюсь перейти на страницу 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 страницы.

Как сделать страницу 404 для всех, если она не зарегистрирована в роутах?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вы можете сделать это очень легко, например, следуя шагам

Шаг 1: выполните приведенную ниже команду

rails generate controller errors not_found

Шаг 2: откройте и измените этот контроллер, например, ниже

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

Шаг 3: обновить маршруты, как показано ниже

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

Шаг 4: обновить файл конфигурации, который application.rb

config.exceptions_app = self.routes

Шаг 5: Удалить шаблон по умолчаниюиз общедоступной папки, например 404.html

И перезапустите свой сервер, затем протестируйте localhost:3000/404, он автоматически будет работать на production сервере

для получения подробной информации, вы можете увидеть это сообщение в блоге

0 голосов
/ 31 декабря 2018

Это поведение по умолчанию в режиме разработки.В env разработки отображаются ошибки маршрутизации, чтобы разработчик мог их заметить и исправить.Если вы хотите увидеть страницу 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
...