我有一个具有两种类型的用户的应用程序-员工和客户,客户下达员工处理的订单。
对于每种类型的用户,我都有一个单独的控制器OrdersController,该控制器提供各种操作和不同类型的视图。
我希望能够在共享部分中执行redirect_to order_path(@order)
,以便根据用户类型来访问正确的控制器。
例如:order_path(Order)
对于员工应翻译为/employees/orders/ID
,对于客户应翻译为/clients/orders/ID
。
最好不要使用诸如“调度控制器”之类的骇客,它们会根据用户类型或为每种类型的用户对Orders进行子分类来发布进一步的重定向。
如何为此设置路由?
答案 0 :(得分:1)
这不是“动态路由”的真正工作,路由表在设计上是静态的。
相反,您可以定义自己的帮助程序方法来查看当前用户类型,并调用正确的路由帮助程序。
例如:
# app/helpers/application_helper.rb
def order_path(order)
if current_user.is_a? Employee
employee_order_path(order)
else
user_order_path(order)
end
end