如何在Deave中创建确认后重定向?

在我添加confirmation module之前,自定义after_sign_up_path第一次运行良好login/signup,但现在当我单击邮箱中的确认链接时,它会重定向到我为登录后路径(用户配置文件)设置的路径.

我的目标是创建一个表单向导和"入门"页面来收集更多信息.显而易见的警告是,这种重定向只会在确认后发生一次.

我try 了其他一些已发布在Stack Overflow上的解决方案,但它们似乎都不再有效.

推荐答案

基本上,你想改变Deave ConfirmationsController中的大约line 25个.

这意味着您需要覆盖show个动作,将show个动作中if条语句的"快乐路径"修改为您内心的内容:

class ConfirmationsController < Devise::ConfirmationsController
  def new
    super
  end

  def create
    super
  end

  def show
    self.resource = resource_class.confirm_by_token(params[:confirmation_token])

    if resource.errors.empty?
      set_flash_message(:notice, :confirmed) if is_navigational_format?
      sign_in(resource_name, resource)
      respond_with_navigational(resource){ redirect_to confirmation_getting_started_path }
    else
      respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render_with_scope :new }
    end
  end
end

以及它的作用域路由(我将视图和操作放在注册控制器中,但您可以将其更改为任何内容):

devise_for :users, controllers: { confirmations: 'confirmations' }
devise_scope :user do
  get '/confirmation-getting-started' => 'registrations#getting_started', as: 'confirmation_getting_started'
end

默认的show操作是指受保护的after_confirmation_path_for方法,因此作为另一个选项,您可以修改该方法返回的内容.

Ruby-on-rails相关问答推荐

Rails 7通过引擎将方法自动加载到控制器中的方法

在Rails中,如何将帮助器方法添加到属性/列?

复制我的活动时,活动描述没有复制过来

如何验证 Rails 中的多态字段关联?

验证模型属性大于另一个

Rails 100% 新手问题 - send() 方法

在哈姆尔与当地人进行局部渲染?

使用 Rspec 测试 Rails 3.1 可安装引擎

禁用冻结字符串文字注释判断

Rails 将 form_for 对象传递给部分

如何将 Ruby 哈希转换为 XML?

RSpec 设置会话对象

如何在 ruby​​ on rails 中获取控制器和操作列表?

在公共 Rails 应用程序中将敏感数据存储在哪里?

什么是Ruby 用于 BESIDES 轨道?

如何在Ruby 中对数字进行上限和舍入

嵌套模型和父验证

在范围内传递参数

设计/Rails - 如何删除特定的 Flash 消息? (登录成功)

我应该在 Heroku Cedar 上使用薄的还是独角兽