Маловероятно, что у вас есть сеанс, а у нет реферера.
Ситуация, когда реферер не установлен, не редкость, и я обычно спасаю это ожидание:
def some_method
redirect_to :back
rescue ActionController::RedirectBackError
redirect_to root_path
end
Если вы делаете это часто (что я считаю плохой идеей), вы можете обернуть его другим способом, как предлагает Маран.
Кстати, я думаю, что это плохая идея, потому что это делает поток пользователей неоднозначным. Это разумно только в случае входа в систему.
ОБНОВЛЕНИЕ : Как отметили несколько человек, это больше не работает с Rails 5.
Вместо этого используйте redirect_back
, этот метод также поддерживает запасной вариант. Код становится:
def some_method
redirect_back fallback_location: root_path
end