【问题标题】:after_sign_up_path_for not working - devise [duplicate]after_sign_up_path_for 不工作 - 设计 [重复]
【发布时间】:2026-01-19 00:40:01
【问题描述】:

我正在尝试在注册后设计重定向到自定义页面。它不工作。我有以下自定义注册控制器:

class RegistrationsController < Devise::RegistrationsController
  protected

  puts 'Registrations controller is happening"

  def after_sign_up_path_for(resource)
     puts 'after_sign_up_path_for is working'
    "http://www.google.com" 
  end

  def after_inactive_sign_up_path_for(resource)
    puts 'after_inactive_sign_up_path_for is working'
   "http://www.google.com" 
  end
end

这是我的自定义路线:

devise_for :users, :controllers => { :registrations => :registrations }

所以有趣的是注册控制器正在工作,因为第一个 puts 语句显示在服务器日志中。但是,第二个和第三个 put 语句(在 after_sign_up_path_for 和 after_inactive_sign_up_path_for 内)没有出现。

注册工作后如何获得重定向?

【问题讨论】:

  • 不是重复的。我看到了这个问题,但答案对我不起作用。
  • 你检查其他答案了吗?
  • 是的,我已经查看了所有堆栈溢出页面和其他我能找到的资源。
  • 您是否有机会更改设计路线的默认名称?你在routes.rb 文件中使用devise_scope 吗?
  • 不,我在上面发布的路线文件中关于设计的唯一更改。

标签: ruby-on-rails model-view-controller devise ruby-on-rails-4 rails-routing


【解决方案1】:

我建议您将这些助手移动到 ApplicationController(请参阅 docs)并将它们放在公共命名空间中。

【讨论】:

  • 谢谢,但我不认为这会很有效,因为它不应该像在应用程序控制器中那样在每个控制器操作之后都通过该方法。这仅用于返回某些页面。只有在用户尝试注册时才能看到此方法。至少这就是我从这些焦点中得到的:github.com/plataformatec/devise/wiki/…
  • 我试过了,还是不行。
  • 我在路由中看到的另一个不同之处,你尝试:registrations =&gt; 'registrations'了吗?我的意思是字符串值?
  • 谢谢,试过了,但没有用。我不认为它是路由的问题,因为第一个 puts 语句正在执行,所以路由必须告诉它去那里。我认为这与 after_sign_up 方法有关。