我的应用有三个单独的登录信息:
routes.rb中:
devise_for :visitors, controllers: { registrations: 'visitor/registrations' }
## Visitors Authentication Scope ##
devise_scope :visitor do
authenticated :visitor do
root 'properties#index', as: :visitor_authenticated_root
end
unauthenticated :visitor do
root 'devise/sessions#new', as: :visitor_unauthenticated_root
end
end
## END Visitors Authentication Scope ##
devise_for :admins, controllers: { registrations: 'admin/registrations' }
## Administration Authentication Scope ##
devise_scope :admin do
authenticated :admin do
root 'properties#index', as: :admin_authenticated_root
end
unauthenticated :admin do
root 'devise/sessions#new', as: :admin_unauthenticated_root
end
end
## END Administration Authentication Scope ##
devise_for :residents, controllers: { registrations: 'resident/registrations' }
## Residents Authentication Scope ##
devise_scope :resident do
authenticated :resident do
root 'properties#index', as: :resident_authenticated_root
end
unauthenticated :resident do
root 'devise/sessions#new', as: :resident_unauthenticated_root
end
end
## END Residents Authentication Scope ##
目前他们都指向properties#index
。管理范围将指向管理页面作为路径,但每个管理页面将具有不同的导航栏功能和不同的视图布局。
如果我使用布尔值来设置我的用户类型,我通常会使用if
/ else
语句,但是我为此创建了单独的模型。
如何设置不同的布局?我阅读了一些文章,但其中很多文章都没有意义,或者没有做我想要完成的事情。
我正在使用Rails 4和Ruby 2。
答案 0 :(得分:1)
只需制作一些部分内容并使用if
语句,如:
if signed_in?
if current_visitor
= render 'path/to/visitor/navbar'
if current_admin
= render 'path/to/admin/navbar'
if current_resident
= render 'path/to/resident/navbar'