ruby-on-rails - Rails 3 和设计 : Redirecting to page following signup (confirmable)

标签 ruby-on-rails devise redirect

我有一个带有 Devise 的 Rails 3 项目,启用了可确认,因此用户必须在注册后通过电子邮件确认他们的帐户。目前,该项目将用户返回到登录页面并抛出“您已成功注册...”通知。我想做的是将他们重定向到“谢谢”页面,并附上进一步的说明(检查您的电子邮件、垃圾邮件文件夹、等等)。

我的第一站是 Devise wiki,在那里我 found this page .看起来很容易,我进行了以下更改并完全按照说明进行操作...

/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 View 文件夹中移到顶部/app/views 文件夹中,因为返回的错误是 View 现在丢失。无论如何,尽管 Controller 覆盖似乎有效(我认为否则这些 View 最初不会被破坏),但这些说明不起作用......该页面忽略了 after_sign_up 并在注册后返回到登录页面。

在互联网上打猎,包括其他 Stack Overflow 线程,但我没有发现任何对我有用的答案......注册后自动登录,无需确认启用)。

我尝试过的其他事情......
  • 将 after_sign_up_path_for(resource) 移动到应用程序 Controller 中。不起作用。奇怪的是,对 after_sign_in_path_for(resource) 执行相同的操作并以用户身份登录确实会重定向。
  • 将 registrations_controller.rb 从/app/controllers/移动到/app/controllers/users 文件夹并相应地更新所有路由/引用/等。不行。
  • 将 Devise 的 registrations_controller.rb 复制到我自己的 registrations_controller.rb 中。没有用,只是抛出了一个错误,我把它全部回滚了。
  • 我尝试了 def after_inactive_sign_up_path_for(resource),因为我认为该帐户尚未激活的事实可能是罪魁祸首。这也被忽略了。
  • 还值得一提的是,我曾尝试在这些重大更改后重新启动我的项目,但没有任何效果。

  • 有没有人在启用可确认的情况下成功完成这项工作?

    最佳答案

    我只是将@Shannon 的评论放入一个答案中,以便于查找。

    如果您在注册后需要电子邮件确认,您的用户将处于中间状态,即他们已注册但未单击通过电子邮件发送给他们的链接以确认其帐户。这是一个无效的注册。要在这种情况下重定向,您需要指定:

    def after_inactive_sign_up_path_for(resource)
      "http://example.com"
    end
    

    关于ruby-on-rails - Rails 3 和设计 : Redirecting to page following signup (confirmable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463012/

    相关文章:

    ruby-on-rails - Rails - 参数数量错误(2 个代表 0..1)错误

    ruby-on-rails - ActiveRecord 查询联合

    ruby-on-rails - 带有 MailCatcher 和 Devise gem 的 Rails 4

    javascript - 由于 iOS 12.4 iframe 无法更改顶部 url

    apache - 如何使用 .htaccess 301 重定向特定的子域 URL?

    http - Nginx 将 HTTP 重写为 HTTPS 表示重定向循环?

    ruby-on-rails - Rspec - 你必须激活 Authlogic::Session::Base.controller - 我已经尝试过常见的建议

    ruby-on-rails - accepts_nested_attributes_for 可以基于复合键更新吗?

    ruby-on-rails - 带有设计的未知属性

    ruby-on-rails - rails 和设计 : Override SessionsController