【问题标题】:Custom devise controller is redirecting to wrong path自定义设计控制器重定向到错误的路径
【发布时间】:2019-06-16 08:50:24
【问题描述】:

我的注册路线是 users/sign_up/speed1 等。但是,如果出现密码不匹配等设计错误,它会将用户重定向到“/users”路径。它应该重定向回同一页面并让用户重新输入新密码的功能。这有什么更新吗?

class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end

  def create
    super
  end

  def update
    super
  end

  def speed1
    build_resource
    yield resource if block_given?
    respond_with resource
  end

  def speed2
    build_resource
    yield resource if block_given?
    respond_with resource
  end

  def speed3
    build_resource
    yield resource if block_given?
    respond_with resource
  end

  def speed4
    build_resource
    yield resource if block_given?
    respond_with resource
  end

  def speed5
    build_resource
    yield resource if block_given?
    respond_with resource
  end

  protected

  def after_sign_up_path_for(resource)
    if current_user.role == 'speed1' || current_user.role == 'speed2' || current_user.role == 'speed3' || current_user.role == 'speed4' || current_user.role == 'speed5'
      '/subscription/new' # Or :prefix_to_your_route
    else
      '/'
    end
  end
end

这是我的路线文件

devise_for :users, :controllers => {:registrations => "registrations"}
  devise_scope :user do
    get 'users/sign_up/speed1', to: 'registrations#speed1'
    get 'users/sign_up/speed2', to: 'registrations#speed2'
    get 'users/sign_up/speed3', to: 'registrations#speed3'
    get 'users/sign_up/speed4', to: 'registrations#speed4'
    get 'users/sign_up/speed5', to: 'registrations#speed5'
  end

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    您可以将此添加到您的application_controller.rb,它将返回到用户访问的最后一个页面,或root_path

    private
    
    # If your model is called User
    def after_sign_in_path_for(resource)
      session["user_return_to"] || root_path
    end
    

    【讨论】:

    • 那没有任何好处。如果我的用户收到表单错误,它会将他们重定向到 /users,而实际上它应该只在用户当前所在的同一页面上重新加载
    • 我觉得你是对的,这个方法是登录后,我会做一些研究
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多