我正在尝试根据用户是否已登录来动态设置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_root
和unauthenticated_root
。当我在视图中使用这些时,我会收到如下错误:
ActionView::Template::Error (undefined local variable or method `authenticated_root' for #<#<Class:0x007ff8c37830e8>:0x007ff8c997e5b8>)
理想解决方案:
通过身份验证定义root_path
。因此,如果用户为authenticated
,则root_path
为static_pages#index
,如果不是,则为static_pages#landing
。我不确定rails
是否可以这样做(我还是新手)。
替代解决方案:
如果无法使用动态root_path
,那么替代方法就是按照上面authenticated_root
中的unauthenticated_root
和routes.rb
的路径行进。< / p>
答案 0 :(得分:1)
使用此authenticated_root_path