2016-08-04 57 views
0

我已经创建了一个使用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 

这里是我的导航栏中的“主页”链接代码:

- 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

尝试包装既您的身份验证和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 
+0

也似乎并没有按预期工作。我仍然被重定向到'unauthenticated_root_path'@PaulFioravanti – Herm