我随后在我的Rails应用程序中添加了:confirmable。问题是,当我在添加:confirmable后注册时,注册后并没有显示通知告诉我发生了什么事,例如:
You will receive an email with instructions about how to confirm your account in a few minutes.
为什么没有出现通知,添加:confirmable后如何添加该通知?
感谢帮助
最佳答案
没有出现通知,因为设备正在重定向到您的根路径,该路径可能受到设备身份验证的保护。当您点击root_path时,您将被重定向回到sign_in页面(因为由于尚未激活用户,因此设计该用户无法对其进行登录)。您可以通过在输入用户信息并单击“注册”按钮后查看开发日志来验证-您将在日志中看到一个注册用户的请求,然后一个请求导航到您的根url(无论您使用的是什么)路由),然后由于身份验证将导航重定向到sign_in页面。
在重定向期间,所有Flash消息都将丢失(因为Flash消息仅对下一个请求有效),并且当您从root_path重定向到sign_in页面时,您是在请求。因此,您要么在重定向第一个请求之前就对其使用flash.keep,要么更改after_sign_up路径以使重定向不会发生。我建议更改after_sign_up路径,因为它更容易并且看起来是正确的方法。
为此,您需要使用自己的 Controller 进行注册,并添加after_sign_up_path方法,该方法返回用于重定向的url:
# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController
private
def after_inactive_sign_up_path_for(resource)
new_user_session_path
end
end
#config/routes.rb
devise_for :users, :controllers => { :registrations => "registrations" }
我还建议您阅读与您类似的问题:Rails 3 and Devise: Redirecting to page following signup (confirmable)
关于ruby-on-rails - 设计:注册后添加通知(可确认),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18969519/