我创建了一个使用Rails 5的应用程序。我的用户身份验证由Devise gem管理。
我需要为经过身份验证和未经身份验证的用户提供不同的根路径。我按照here给出的提示。一切似乎都很直接,但在登录后,我仍然会在点击我的主页时重定向到正常的root_path。例如链接。
这是我的route.rb代码:
authenticated :user do
root to: 'api/v1/private/reporting/dashboards/summaries#index', as: :authenticated_root
end
root to: 'landing#index', as: :root
以下是' Home'的代码。链接在我的导航栏中:
- if api_v1_public_members_user_signed_in?
= link_to 'Home', authenticated_root_path
- else
= link_to 'Home', root_path
有人可以发现我可能遗失的东西吗?
**对于' api_v1_public_members_user_signed_in?'方法可能看起来不熟悉,但它是必需的,因为我命名了我的设计控制器。有关详细信息,请参阅here。
答案 0 :(得分:1)
尝试在devise_scope
下包装经过身份验证和未经身份验证的根路径,并为它们提供不同的名称:
devise_scope :user do
authenticated :user do
root to: 'api/v1/private/reporting/dashboards/summaries#index', as: :authenticated_root
end
unauthenticated :user do
root to: 'landing#index', as: :unauthenticated_root
end
end
然后,将您的观点更改为:
- if api_v1_public_members_user_signed_in?
= link_to 'Home', authenticated_root_path
- else
= link_to 'Home', unauthenticated_root_path