В Rails 4.x для возврата на предыдущую страницу, использовался метод redirect_to :back.
Иногда, при использовании данного метода в контроллере, мы могли получать ошибку ActionController::RedirectBackError,
это случалось тогда, когда не был установлен HTTP_REFERER в заголовках запроса.
Рассмотрим пример, в котором обработаем ошибку ActionController::RedirectBackError и заставим наше приложение редиректить на root_url в случае отсутствия заголовка HTTP_REFERER:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
В случае возникновения ошибки, сработает приватный метод redirect_to_default, который отредиректит на корневой path.
Rails 5
В Rails 5, redirect_to :back считается deprecated, и вместо него появился новый метод который называется - redirect_back.
В нем в качестве дополнительной опции можно передать fallback_location, и таким образом избавиться от тех костылей которые мы реализовывали выше.
Изменим наш пример для Rails 5
1 2 3 4 5 6 7 8 9 | |
Как видите все стало намного прозрачнее и проще!