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 (ресурс), поскольку, по-моему, возможно, тот факт, что учетная запись еще не активна, была виновницей. Это также игнорируется.
-
Также стоит упомянуть, что я попытался перезапустить свой проект после этих крупных изменений, но ничего не происходит.
Кто-нибудь имел успех в том, чтобы снять это с подтверждением?
Ответы
Ответ 1
Какую версию разработки вы используете? Я уверен, что эта проблема
Моя запись route.rb
devise_for :users, :controllers => { :registrations => "users/registrations" }
Из моего Gemfile
gem 'devise', :git => "git://github.com/plataformatec/devise.git"
Сообщите мне, если у вас возникли проблемы с последней версией разработки.
Ответ 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