если кто-то напутает с: id в URL, например / edit / 15 и id 15 не существует, как я могу отобразить свою собственную страницу с ошибкой «страница не существует» вместо обработки представления (что приведет кошибка, так как она ожидает данные)
Я знаю, как добавить код для проверки этого метода по методу, но есть ли какой-нибудь глобальный способ отловить все такие ошибки в контроллере независимо от метода?
Я бы хотел избежать необходимости копировать / вставлять что-то вроде
redirect_to "/invalid_page.html" and return if @something.nil?
в каждый метод, где я делаю
@something = MyModel.find(params[:id])
Конечно, если это полностью поддельная ссылка, например, myapp.com/nosuchpage, затем отобразится страница /public/404.html.Но если это действительный маршрут, но недопустимый идентификатор, он выдает исключение в представлении, где представление неожиданно имеет дело с нулевыми данными, и я понятия не имею, существует ли место в контроллере для захвата и обработки этого исключения.