Ruby on Rails中点击注册按钮跳转至登录页的实现问题
解决Devise自定义登录控制器与注册跳转的问题
嘿,我来帮你搞定这两个Devise相关的问题:
一、LoginController中替换root_url的正确路径
你提到的root_url应该是登录成功后的跳转目标,具体替换成哪个路由,完全取决于你希望用户登录后进入的页面:
- 如果你想让用户登录后进入后台仪表盘,就用对应的路由辅助方法,比如
dashboard_path(前提是你已经在routes.rb里定义了这个路由,比如get 'dashboard', to: 'dashboards#index') - 如果是用户个人主页,就用
user_profile_path(current_user)这类路径 - 不确定路由辅助方法叫什么?直接在终端运行
rails routes命令,就能看到所有路由对应的辅助方法名称,找你需要的那个就行
另外,如果你想根据用户角色做不同跳转,还可以在LoginController里重写after_sign_in_path_for方法:
def after_sign_in_path_for(resource) # 比如管理员跳后台,普通用户跳个人主页 resource.admin? ? admin_dashboard_path : user_profile_path(resource) end
二、让Sign Up按钮重定向到登录页面
有两种简单的方式实现:
方法1:直接修改按钮链接
找到页面中Sign Up按钮的代码,把原来的new_user_registration_path(Devise默认的注册页路由)换成new_user_session_path(登录页路由)就行,比如:
<%= link_to 'Sign Up', new_user_session_path, class: 'btn' %>
方法2:在routes.rb里重定向注册路由
如果想彻底让所有访问注册页的请求都跳转到登录页,可以覆盖Devise的注册路由:
# 先跳过Devise默认的注册相关路由 devise_for :users, skip: [:registrations] # 重新定义注册路径的跳转规则 devise_scope :user do get '/users/sign_up', to: redirect('/users/sign_in') end
这样不管是点击按钮还是直接输入注册URL,都会跳转到登录页面啦~
内容的提问来源于stack exchange,提问作者Pushpam Kumar
相关产品推荐
相关产品推荐

