我有一个名为carts_controller
的控制器,在我的路线中,我使用的是宁静的路线,即resources :carts
。
我知道资源会创建默认操作,例如创建,索引等,但如果我不想创建和创建方法add_to_cart
,并且在路由中我已将其路由定义为
post '/add_cart/:product_id/' => 'carts#add_to_cart', as: 'add_to_cart'
这条路线是否考虑过RESTFUL?
我不想使用资源创建的所有默认RESTFUL
路由。我想要一些自定义动作来代替这些。我的代码正在运行但我很困惑,因为我的概念不明确。另一件事是,如果我知道我的路线中需要product_id
,我应该将它们嵌套在产品资源中吗?如果我定义了上面定义的自定义广告,它会起作用吗?
任何帮助将不胜感激!
答案 0 :(得分:0)
我认为你目前的做法很好。并非所有控制器操作都能很好地适应标准的CREATE / UPDATE / DESTROY操作。 add_to_cart
的作用也非常明显。
作为替代方案,您可以考虑在购物车控制器的update
操作中执行此操作。如果cart
有许多products
,您可以考虑使用嵌套参数:
params: {
cart: {
products_attributes: [{
"0" => { ...product_attributes_here.. }
},
...
}
}