Rails 设计将经过身份验证的用户重定向到特定路径
Rails Devise redirecting authenticated user to a specific path
问题
使用 Devise,user
应该在已经登录时重定向到 Devise 控制器 registrations#edit
操作的 edit_user_registration_path
。
描述
在 routes.rb
中 root 设置为 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
问题
使用 Devise,user
应该在已经登录时重定向到 Devise 控制器 registrations#edit
操作的 edit_user_registration_path
。
描述
在 routes.rb
中 root 设置为 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