设计:注册后添加通知(可确认)

时间:2013-09-23 21:52:12

标签: ruby-on-rails devise ruby-on-rails-4

我补充说:随后确认我的Rails应用程序。问题是,当我在添加后注册时:确认我在注册后没有收到通知,告诉我发生了什么,例如:

You will receive an email with instructions about how to confirm your account in a few minutes.

为什么不显示通知,如何添加以下内容后添加该通知?确认?

感谢您的帮助

1 个答案:

答案 0 :(得分:19)

通知未显示,因为设计重定向到您的根路径,该路径可能受设计身份验证保护。当您点击root_path时,您将被重定向回sign_in页面(因为设计无法登录用户,因为它尚未激活)。您可以在输入用户信息并点击“注册”按钮后查看开发日志来验证这一点 - 您将在日志中看到一个注册用户的请求,然后导航到您的根URL(您的任何内容) routes.rb)然后由于身份验证将导航重定向到sign_in页面。

在重定向期间,所有闪存消息都将丢失(因为闪存消息仅对下一个请求有效),并且当您从root_path重定向到sign_in页面时,您正在发出请求。因此,您需要在重定向之前在第一个请求上使用flash.keep,或者更改after_sign_up路径,以便不会发生重定向。我建议更改after_sign_up路径,因为它更容易,看起来是一种正确的方法。

为此,您需要使用自己的控制器进行注册,并添加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)