设计经过身份验证,未经身份验证和根路径的路由

时间:2015-11-14 21:06:17

标签: ruby-on-rails devise

我正在尝试根据用户是否已登录来动态设置root_path。我尝试了很多变体,但在使用root时无法将经过身份验证的用户路由到static_pages#index网址www.mysite.com/。我仍然是铁杆的新手,并且已经看到类似的问题,但没有任何对我有用(或者我没有正确实施解决方案)。

我的routes.rb

devise_for :users

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

unauthenticated :user do
  root 'static_pages#landing', as: :unauthenticated_root
end

当我运行rake routes时,我会看到authenticated_rootunauthenticated_root。当我在视图中使用这些时,我会收到如下错误:

ActionView::Template::Error (undefined local variable or method `authenticated_root' for #<#<Class:0x007ff8c37830e8>:0x007ff8c997e5b8>)

理想解决方案: 通过身份验证定义root_path。因此,如果用户为authenticated,则root_pathstatic_pages#index,如果不是,则为static_pages#landing。我不确定rails是否可以这样做(我还是新手)。

替代解决方案: 如果无法使用动态root_path,那么替代方法就是按照上面authenticated_root中的unauthenticated_rootroutes.rb的路径行进。< / p>

1 个答案:

答案 0 :(得分:1)

使用此authenticated_root_path