将一个控制器操作映射到另一个操作 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.. }
    },
    ...
  }
}