ruby-on-rails – 设计为每个用户类型设置不同的根路径

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 设计为每个用户类型设置不同的根路径前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经创建了一个设计用户模型.有两种类型的用户

>客户
>管理员

我已经完成了bij创建两个“正常”模型:客户和管理员.这两个模型继承自用户模型,如下所示:

class Customer < User

有谁知道如何为每种类型的用户设置根路径.我想要这样的东西:

authenticated :customer do
  root :to => "customer/dashboard#index"
end

authenticated :admin do
  root :to => "admin/dashboard#index"
end

更新:

我已经解决了这个问题:

root :to => "pages#home",:constraints => lambda { |request|!request.env['warden'].user}
root :to => 'customer/dashboard#index',:constraints => lambda { |request| request.env['warden'].user.type == 'customer' }
root :to => 'admin/dashboard#index',:constraints => lambda { |request| request.env['warden'].user.type == 'admin' }

解决方法

虽然是一个老问题,但没有答案,它可能对其他人有用.

在rails 3.2中(我从未测试过任何更低版本)你可以在routes.rb文件中执行此操作

authenticated :admin_user do
  root :to => "admin_main#index"
end

然后让你的正常根路径进一步下降.

然而,这似乎不适用于rails 4,因为它提供了已经在使用的无效路由名称:’root'(ArgumentError)(正如我刚刚发现并在我遇到此问题时正在搜索解决方案),如果我找到一种方法在rails 4中这样做,我会更新我的答案

编辑:

好吧,对于rails 4来说,修复非常简单但不是那么明显.您需要做的就是通过添加as来使第二个根路由成为命名路由:像这样:

authenticated :admin_user do
  root :to => "admin_main#index",as: :admin_root
end

这是记录here但请注意,它似乎只是一个临时修复,因此将来可能会再次更改

原文链接:https://www.f2er.com/ruby/269801.html

猜你在找的Ruby相关文章