我有一个启用了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在启用confirmable时通常会自动进行注册但不需要确认)。
我尝试过的其他事情...
1. 将 after_sign_up_path_for(resource) 移动到application控制器中。不起作用。奇怪的是,使用 after_sign_in_path_for(resource) 并使用用户签入确实会重定向。
2. 将 registrations_controller.rb 从 /app/controllers/ 移到 /app/controllers/users 文件夹中,并相应更新所有路由/引用/等。无法进行。
3. 将 Devise 的 registrations_controller.rb 复制到我的 custom_registrations_controller.rb 中。不起作用,只是抛出一个错误,我把它全部回滚了。
4. 我尝试使用 def after_inactive_sign_up_path_for(resource),因为我认为帐户尚未激活可能是元凶,但也被忽略了。
5. 还值得一提的是,我尝试在这些重大更改后重新启动我的项目,但仍然没有解决问题。
有人成功地在启用 confirmable 的情况下做到这一点吗?