Перенаправление на задний план устарело в Rails5. Что использовать вместо этого?

Если вы попытались перейти на Rails 5.1, вы, вероятно, столкнулись со следующей ошибкой.

undefined method `back_url’

Причиной ошибки является эта строка кода в вашем действии контроллера.

redirect_to :back

Да, функция redirect_to не принимает :back в качестве аргумента в Rails 5. Она была заменена недавно улучшенной функцией redirect_back.

redirect_back(fallback_location:"/")
redirect_back(fallback_location: { action: "show", id: 5})
redirect_back(fallback_location: users_path)

Теперь вам может быть интересно, зачем было нужно это изменение? И какая польза от fallback_location?

Redirect_to: назад зависит от переменной заголовка запроса HTTP_REFERER. Реферер HTTP — это необязательное поле заголовка HTTP, которое идентифицирует адрес веб-страницы (т. е. URI или IRI), связанной с запрашиваемым ресурсом. Если бы запрос был по прямой ссылке, то HTTP_REREFER отсутствовал бы в заголовке запроса. В таком случае Rails выдавал ошибку. До Rails 5.1 это нужно было явно обрабатывать с помощью условия или блока восстановления.

Следовательно redirect_back введена функция. Требуется аргумент резервное_местоположениекоторый будет использоваться для перенаправления страницы в случае HTTP_REREFER отсутствует.Начните писать здесь…

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *