В 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 |
|
Как видите все стало намного прозрачнее и проще!