Rails 3 и Devise: перенаправление на страницу после регистрации (подтверждается)

У меня есть проект Rails 3 с Devise, подтверждаемый включен, поэтому пользователь должен подтвердить свою учетную запись по электронной почте после регистрации. В настоящее время проект возвращает пользователя на страницу входа в систему и выдает сообщение "Вы успешно зарегистрировались...". Вместо этого я хочу перенаправить их на страницу "спасибо", с дальнейшими инструкциями (проверьте электронную почту, папку со спамом, бла-бла).

Моя первая остановка была вики Devise, где я нашел эту страницу. Посмотрев достаточно легко, я сделал следующие изменения и точно следил за указаниями...

/app/controllers/registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
   protected
      def after_sign_up_path_for(resource)
        "http://google.com"
      end        
end

/config/routes.rb

devise_for :users, :controllers => { :registrations => "registrations" }

Единственной модификацией, которую я должен был выполнить над направлением, было перемещение папки "регистрации" из папки просмотра/приложения/просмотров/разработки и в папку top/app/views, поскольку ошибка вернулась, что теперь были представления отсутствует. Во всяком случае, несмотря на то, что надстройка контроллера перестала работать (я не думаю, что точки зрения первоначально были нарушены в противном случае), эти направления НЕ работают... страница игнорирует after_sign_up и возвращается на страницу входа после регистрации.

Прошел охоту в интернете, в том числе другие потоки, но ничего, что я нашел, не работал у меня... либо ответы путают перенаправление регистрации для входа в IN, либо то, что они на самом деле делают, это изменение перенаправления после входа в систему ( поскольку Devise обычно автоматически подписывается после регистрации без подтверждения).

Другие вещи, которые я пробовал...

  • Перемещение параметра after_sign_up_path_for (resource) в контроллер приложения. Не работает. Как ни странно, делать то же самое с after_sign_in_path_for (ресурс) и входить в качестве пользователя перенаправляет пользователя.

  • Перемещение registrations_controller.rb из/app/controllers/в папку /app/controller/users и обновление всех маршрутов/ссылок/etc соответственно. Нет.

  • Копирование Devise registrations_controller.rb в мой собственный registrations_controller.rb. Не работает, просто выкинула ошибку, и я все это вернул.

  • Я попробовал def after_inactive_sign_up_path_for (ресурс), поскольку, по-моему, возможно, тот факт, что учетная запись еще не активна, была виновницей. Это также игнорируется.

  • Также стоит упомянуть, что я попытался перезапустить свой проект после этих крупных изменений, но ничего не происходит.

Кто-нибудь имел успех в том, чтобы снять это с подтверждением?

Ответы

Ответ 2

Я просто помещаю комментарий @Shannon в ответ, чтобы было легче найти.

Если вам требуется подтверждение по электронной почте после регистрации, ваш пользователь останется в промежуточном состоянии, где они зарегистрировались, но не нажали ссылку, отправленную по электронной почте, чтобы подтвердить свою учетную запись. Это неактивный аккаунт. Для перенаправления в этой ситуации вам необходимо указать:

def after_inactive_sign_up_path_for(resource)
  "http://example.com"
end

Ответ 3

Другим способом было бы сделать это в контроллере приложений

def after_sign_in_path_for(resource)
  resource.sign_in_count <= 1 ? '/edit_profile' : root_path
end