Rails Edit-Form包含所有可用选项

时间:2018-01-29 14:14:19

标签: ruby-on-rails forms ruby-on-rails-4

我们说我有@cart这样的对象与has_many@product的关系。

现在,在@cart的编辑表格中,我有@product的相关项目:

购物车ID#1234:

  • 产品#1:金额:5
  • 产品#6:数量:10

我需要的是,数据库中所有可能的@products都会显示0这样的数量:

购物车ID#1234:

  • 产品#1:金额:5
  • 产品#2:金额:0
  • 产品#3:金额:0
  • 产品#4:金额:0
  • 产品#5:金额:0
  • 产品#6:数量:10

如果用户更改了一个product的金额,我可以保存这个新金额(分别为关系)

1 个答案:

答案 0 :(得分:0)

edit行动中,您可以

ProductType.each do |product_type|
  next if @cart.products.where(product_type: product_type.id).empty?
  @cart.build_products(product_type: product_type)
end

这将创建所有产品类型。

然后在update行动中你可以做

  if @cart.update_attributes(cart_params)
    @cart.products.each do |product|
      product.destroy if product.amount == 0
    end
...

...这是为了删除未使用的产品。