Rails 设计将经过身份验证的用户重定向到特定路径

Rails Devise redirecting authenticated user to a specific path

问题

使用 Devise,user 应该在已经登录时重定向到 Devise 控制器 registrations#edit 操作的 edit_user_registration_path

描述

routes.rbroot 设置为 root :to => 'main#welcome'。用户总是被重定向到此页面,即使已经登录也是如此。

非常感谢 法布里齐奥

Devise 提供 user_signed_in? 方法。

这就是你的welcome方法main_controller.rb

def welcome 

    if user_signed_in?
        redirect_to edit_user_registration_path
    else
        // put other page in here
    end        
end

也许您正在寻找一种在用户登录后将用户重定向到某个地方的方法。这应该可以做到。将其放入 app/controllers/application_controller.rb 并放置在您希望将用户带到

的路径中
  def after_sign_in_path_for(resource)
    edit_user_registration_path # or any other path needed
  end

这可能会产生误导,但用户是在 sign up 之后通过设计登录的 在 Devise::RegistrationsController#create

中调用的方法
class Devise::RegistrationsController < DeviseController

  # POST /resource
  def create
    build_resource(sign_up_params)
    # omitted code
    resource.save
    sign_up(resource_name, resource)

哪个 sign_in() 用户

def sign_up(resource_name, resource)
  sign_in(resource_name, resource)
end

所以要加强的方法是

def after_sign_in_path_for(resource)
  edit_user_registration_path
end