ruby-on-rails - 设计:注册后添加通知(可确认)

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

我随后在我的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/

相关文章:

ruby - 目录 : Devise 500 error

ruby-on-rails - rails : Cookie overflow with omniauth twitter sign up

ruby-on-rails - 设计 gem 跳过确认和同时通过电子邮件跳过确认

ruby-on-rails - 如何从 url 查询参数中检查 rails params hash 是否包含双引号字符串?

javascript - 无法在 ruby​​ on Rails 的backboneJS 中使用实心规范 Highcharts

javascript - 如何通过谷歌翻译来翻译整个网站?

ruby-on-rails - 使用外部 URL 作为附件时,Paperclip 提示内容类型错误

ruby-on-rails - Rails - Elastic Beanstalk nginx/error.log

ruby-on-rails - mailboxer gem - 查找邮件发件人

ruby-on-rails - rails : Why before_save on parent is called?