我正在尝试创建一个简单的Rails应用程序,用户可以在其中以招聘人员,求职者或管理员的身份登录(我将保留admin的实现方式供以后使用)。未经身份验证的用户的根目录应该是主页,但是一旦用户登录,该根目录便被设置为其各自的仪表板。
我为每个用户创建了一个模型,并生成了单独的视图文件,控制器等(用于不同的范围)。
我遇到的问题是,当我以招聘者身份注册/登录时,如果我将devise_for :recruiters
配置放在{{1}之前,则会重定向到正确的根路径。 }配置。
但是,在这种情况下,当我尝试以申请人身份注册/登录时,我会被重定向到默认根目录即主页。相反,当我将devise_for :applicants
放在devise_for :applicants
配置之前。
此外,如果我删除默认的根目录devise_for :recruiters
,并尝试以root to: "pages#home", as: "guest_root"
配置不是在route.rb文件中位于第一位的用户身份注册/登录,我将获得默认值Rails的“欢迎”页面。
我的路线文件当前如下所示:
devise_for
我已经尝试过将Rails.application.routes.draw do
devise_scope :applicant do
devise_for :applicants, path: "applicants",
controllers: {
sessions: "applicants/sessions",
registrations: "applicants/registrations",
},
path_names: {
sign_in: "login",
sign_out: "logout",
sign_up: "register",
}
authenticated do
root to: "dashboards#applicant_dashboard", as: "authenticated_applicant_root"
end
end
devise_scope :recruiter do
devise_for :recruiters, path: "recruiters",
controllers: {
sessions: "recruiters/sessions",
registrations: "recruiters/registrations",
},
path_names: {
sign_in: "login",
sign_out: "logout",
sign_up: "register",
}
authenticated do
root to: "dashboards#recruiter_dashboard", as: "authenticated_recruiter_root"
end
end
get "about", to: "pages#about"
get "contact", to: "pages#contact"
root to: "pages#home", as: "guest_root"
end
块移到devise_for
之外,但是没有任何区别。我看到了一些示例,在登录后指定路径的方式如下:
devise_scope
但是我想我只需要以一种能使Devise正常工作的方式来编写路由文件,而不管我写入配置块的顺序如何。
有人可以建议我可能会出问题的地方,还是可以向我指出一些实现了类似内容的示例/资源?我已经特别搜索了网络和设计wiki,但没有结果。