Sha*_*non 15 redirect ruby-on-rails devise
我有一个带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
Run Code Online (Sandbox Code Playgroud)
/config/routes.rb
devise_for :users, :controllers => { :registrations => "registrations" }
Run Code Online (Sandbox Code Playgroud)
我必须在方向上进行的一项修改是将"registrations"文件夹移出/ app/views/devise视图文件夹并移至top/app/views文件夹,因为返回的错误现在缺少视图.无论如何,尽管控制器覆盖似乎工作(我不认为视图原本会打破其他方式),这些方向不起作用...页面忽略after_sign_up并在注册后返回登录页面.
在互联网上搜索包括其他Stack Overflow线程,但我发现的任何内容都没有对我有用...或者回答混淆重定向注册用于登录IN,或者他们实际做的是在登录后更改重定向(正如Devise通常注册后自动登录,不启用确认).
我试过的其他事情......
将after_sign_up_path_for(资源)移动到应用程序控制器中.不行.奇怪的是,对after_sign_in_path_for(资源)执行相同操作并以用户身份登录重定向.
将registrations_controller.rb从/ app/controllers /移动到/ app/controllers/users文件夹并相应地更新所有路由/引用/等.不行.
将Devise的registrations_controller.rb复制到我自己的registrations_controller.rb中.没有工作,只是抛出一个错误,我把它全部卷回来.
我尝试了def after_inactive_sign_up_path_for(资源),因为我认为这个帐户不活跃的事实可能是罪魁祸首.这也被忽略了.
值得一提的是,我已经尝试在这些重大更改后重新启动我的项目,但没有任何需要.
有没有人在启用确认功能的情况下取得成功?
Und*_*ion 14
我只是将@ Shannon的评论放到答案中,以便更容易找到.
如果您在注册后要求确认电子邮件,则您的用户将处于他们已注册的中间状态,但未点击通过电子邮件发送给他们以确认其帐户的链接.这是一个不活跃的注册.要在这种情况下重定向,您需要指定:
def after_inactive_sign_up_path_for(resource)
"http://example.com"
end
Run Code Online (Sandbox Code Playgroud)
Bra*_*ker 11
您使用的是哪个版本的设计?我很确定这个问题最近已经解决了所以你可能需要来自repo的最新版本,它仍然是一个候选版本(尽管它应该很快就会出现,因为它们正在等待omniauth 0.2才能退出最近发生的测试版) .
我正在使用带有rails 3.0.5的github repo中的Devise 1.2.rc2.我将您提到的代码添加到我的自定义RegistrationsController中,并在创建新帐户后按预期转发给Google.
我的RegistrationsController的缩减版本(在app/controllers/users中)
class Users::RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
"http://google.com"
end
end
Run Code Online (Sandbox Code Playgroud)
我的routes.rb条目
devise_for :users, :controllers => { :registrations => "users/registrations" }
Run Code Online (Sandbox Code Playgroud)
从我的Gemfile
gem 'devise', :git => "git://github.com/plataformatec/devise.git"
Run Code Online (Sandbox Code Playgroud)
如果您在最新版本的设备上遇到问题,请告诉我.
| 归档时间: |
|
| 查看次数: |
10424 次 |
| 最近记录: |