我正在使用Rails 3和Devise创建一个应用程序,用户可以访问该网站并显示包含登录和注册表单的主页.这个页面有自己的控制器(“主页”)所以它的路线是
root :to => "homepage#index"
root :to => "dashboard#index"
有没有办法在routes.rb中有一个条件路由,这可以让我在将用户路由到其中一个主页之前检查用户是否经过身份验证?
我尝试使用以下代码,但如果我没有登录,设计要求我登录,所以显然只有第一条路线有效.
authenticate :user do root :to => "dashboard#index" end root :to => "homepage#index"
此外,我希望在两种情况下都将网址指向www.example.com,以便www.example.com/dashboard/index和www.example.com/homepage/index永远不会出现在浏览器中.
太感谢了 !!!
解决方法
试试这个,它特定于Warden / Devise.
root to: "dashboard#index",constraints: lambda { |r| r.env["warden"].authenticate? } root to: "homepage#index"