我有一个带有 Devise 的 Rails 3 项目,启用了可确认功能,因此用户必须在注册后通过电子邮件确认其帐户。目前该项目将用户返回到登录页面并抛出“您已成功注册...”通知。我想做的是将他们重定向到“谢谢”页面,并提供进一步的说明(检查您的电子邮件、垃圾邮件文件夹等等)。
我的第一站是 Devise wiki,在那里我找到了这个页面。看起来很简单,我做了以下修改并完全按照说明进行操作......
/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" }
我必须对方向进行的一项修改是将“registrations”文件夹从 /app/views/devise 视图文件夹移到顶部 /app/views 文件夹中,因为返回的错误表明视图现在丢失。无论如何,尽管控制器覆盖似乎有效(我不认为视图最初会被破坏),但这些指示不起作用......页面忽略 after_sign_up 并在注册后返回到登录页面。
在互联网上搜索,包括其他 Stack Overflow 线程,但我发现没有任何对我有用的东西......要么答案混淆了登录的重定向注册,要么他们实际做的是在登录后更改重定向(如通常的 Devise 那样)注册后自动登录,无需确认启用)。
我尝试过的其他事情...
将 after_sign_up_path_for(resource) 移至应用程序控制器中。不起作用。奇怪的是,对 after_sign_in_path_for(resource) 执行相同操作并以用户身份登录确实会重定向。
将 Registrations_controller.rb 从 /app/controllers/ 移动到 /app/controllers/users 文件夹并相应地更新所有路由/引用/等。不去。
将 Devise 的registrations_controller.rb 复制到我自己的registrations_controller.rb 中。没用,只是抛出了一个错误,然后我把它全部回滚了。
我尝试了 def after_inactive_sign_up_path_for(resource) ,因为我认为帐户尚未激活的事实可能是罪魁祸首。这也被忽略了。
还值得一提的是,我曾尝试在这些重大更改后重新启动我的项目,但没有任何效果。
有没有人在启用可确认的情况下成功完成此任务?
我只是将 @Shannon 的评论放入答案中,以便更容易找到。
如果您在注册后需要电子邮件确认,您的用户将处于一种中间状态,他们已注册但未单击通过电子邮件发送给他们的链接来确认其帐户。这是一个非活动注册。要在这种情况下重定向,您需要指定:
def after_inactive_sign_up_path_for(resource)
"http://example.com"
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)