Есть несколько способов сделать это.
С новой версией Devise (я на 2.1.2) добавление before_filter :authenticate_user!
к вашему контроллеру автоматически настроит это поведение для вас.
Если вы все еще хотите настроить это вручную, один из способов - просто указать путь в session
. Devise ожидает найти его в session["#{resource}_return_to"]
, где 'resource' - это название вашей пользовательской модели. Так обычно это session["user_return_to"]
. У тебя был период "." в вашей версии, которая могла быть причиной ваших ошибок. Кроме того, session
принимает строковые значения для ключей, поэтому не нужно пытаться символизировать его.
Другой способ - переписать метод after_sign_in_path_for(resource)
, как вы делали. Более подробную информацию о том, как это сделать, можно найти на вики-устройстве devise How To: Перенаправление на текущую страницу после входа в систему .
Наконец, так как это приведет к перенаправлению, вы можете рассмотреть возможность использования полных URL.
def after_sign_in_path_for(resource)
session["#{resource}_return_to"] || root_url
end