将一个控制器操作映射到另一个操作 rails
Map one controller action on another action rails
我有一个名为 carts_controller
的控制器,在我的路线中我使用 restful 路线,即 resources :carts
。
我知道资源会创建默认操作,如创建、索引等,但如果我不想用户创建和创建方法 add_to_cart
并且在路由中我已将其路由定义为
post '/add_cart/:product_id/' => 'carts#add_to_cart', as: 'add_to_cart'
这条路线是否考虑RESTFUL?
我不想使用资源创建的所有默认 RESTFUL
路由。我想要一些自定义操作来代替这些。我的代码正在运行,但由于我的概念不清楚,我感到很困惑。另一件事是,如果我知道我的路线需要 product_id
,我是否应该将它们嵌套在产品资源中,或者如果我定义上面定义的自定义广告,它会起作用吗?
如有任何帮助,我们将不胜感激!
我觉得你现在的做法很好。并非所有控制器操作都适合标准 CREATE/UPDATE/DESTROY 操作。 add_to_cart
的作用也很明显。
作为替代方案,您可以考虑在购物车控制器的 update
操作中执行此操作。如果 cart
有很多 products
你可以考虑使用嵌套参数:
params: {
cart: {
products_attributes: [{
"0" => { ...product_attributes_here.. }
},
...
}
}
我有一个名为 carts_controller
的控制器,在我的路线中我使用 restful 路线,即 resources :carts
。
我知道资源会创建默认操作,如创建、索引等,但如果我不想用户创建和创建方法 add_to_cart
并且在路由中我已将其路由定义为
post '/add_cart/:product_id/' => 'carts#add_to_cart', as: 'add_to_cart'
这条路线是否考虑RESTFUL?
我不想使用资源创建的所有默认 RESTFUL
路由。我想要一些自定义操作来代替这些。我的代码正在运行,但由于我的概念不清楚,我感到很困惑。另一件事是,如果我知道我的路线需要 product_id
,我是否应该将它们嵌套在产品资源中,或者如果我定义上面定义的自定义广告,它会起作用吗?
如有任何帮助,我们将不胜感激!
我觉得你现在的做法很好。并非所有控制器操作都适合标准 CREATE/UPDATE/DESTROY 操作。 add_to_cart
的作用也很明显。
作为替代方案,您可以考虑在购物车控制器的 update
操作中执行此操作。如果 cart
有很多 products
你可以考虑使用嵌套参数:
params: {
cart: {
products_attributes: [{
"0" => { ...product_attributes_here.. }
},
...
}
}