Rails 4 + Devise:为经过身份验证的用户设置默认根路由

时间:2015-09-04 22:50:34

标签: ruby-on-rails ruby-on-rails-4 authentication devise rails-routing

我做了一些研究,发现这个问题已经在不同的地方多次得到解决:

我尝试按照上面链接中给出的示例,在我的routes.rb文件中提出了以下解决方案:

root to: 'pages#home'

devise_for :users, :path => 'account', controllers: { registrations: "registrations", confirmations: "confirmations" }

authenticated :user do
  root 'calendars#index', as: :authenticated_root
end

此处的目标是将unauthenticated个用户定向到该网站的常规home页面,而authenticated个用户将转到其应用内的信息中心,即{{1路由,在我的路由中定义如下:

calendars#index

但是,当我以用户身份登录并访问calendars GET /calendars(.:format) calendars#index 时,我会继续登陆网站的常规http://localhost:3000/页面,而不是应用内的用户信息中心。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

更改routes.rb以便包含未经身份验证的root路由,就像经过身份验证的路由一样:

devise_for :users, :path => 'account', controllers: { registrations: "registrations", confirmations: "confirmations" }

authenticated :user do
  root 'calendars#index', as: :authenticated_root
end

unauthenticated :user do
  root 'pages#home', as: :unauthenticated_root
end