Как перенаправить каждую страницу, которая не существует или не авторизована для посещения в Ruby on Rails - PullRequest
1 голос
/ 26 мая 2020

По сути, я пытаюсь перенаправить все несуществующие страницы на страницу 404 в моей папке publi c.

До сих пор то, что я делал в своем application_controller.rb, я помещаю ff:

rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized
rescue_from ActiveRecord::RecordNotFound, with: :show_404

Но все же, когда я пытался посетить страницу, которая не существует, например: http://localhost:3000/dashboard/pagedo

Вместо страницы 404 отображается следующее:

enter image description here

Что мне нужно сделать, чтобы это сделать? Нужно ли мне устанавливать какие-то коды на routes.rb?

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Вы можете определить маршрут для всех совпадений (via: :all означает «сопоставить все HTTP-глаголы» ), который необходимо разместить в нижней части вашего config/routes.rb файла. :

match '*path', via: :all, to: 'errors#page_not_found'

И затем обработайте его в контроллере, так же, как и при обработке исключений выше:

class ErrorsController < ApplicationController
  def page_not_found
    show_404
  end
end
0 голосов
/ 27 мая 2020

Ответ Тома Лорда хорош, если вы хотите отобразить все несовпадающие маршруты в разработке на страницу 404; однако в Rails все несовпадающие маршруты отображаются на 404 в public/404.html. Вы можете фактически проверить это, запустив

RAILS_ENV=production bin/rails s

из root вашего проекта. и посещение страницы, которой не существует. Благодаря этому вы будете поддерживать полезную страницу справки 404 по сопоставлению маршрутов в разработке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...