TypeError: no implicit conversion of Array into Integer Rails 4.2
TypeError: no implicit conversion of Array into Integer Rails 4.2
我正在 rails 中构建一个购物车应用程序。 CartItems 模型有一个整数类型的数量列和一个小数类型的 cart_price 列。对于添加到购物车的每个项目,都会向数据库添加一个新行
模型名称 CartItems。控制器获取数量和价格成功。但是当乘法时,我收到上面的错误消息。一旦乘法有效,我想将产品加在一起以获得购物车的小计。
def subtotal
@cart_content = @cart_item.pluck(:quantity,:cart_price)
@subtotal = @cart_content.inject(:*)
end
当我从 @subtotal 中删除 .inject(:*) 时,控制器会检索到正确的数据。
两个产品的视图输出示例,其中包含数量和价格值
[[3, #BigDecimal:7fc9a9b2d980,'0.1285E3',18(36)>], [1, # BigDecimal:7fc9a9b2d7c8,'0.115E3',9(27)>]]
我不是 100% 确定,但您可能想要实现的是:
@cart_content.sum { |c| c.inject(:*) }
- 单个 reduce 不起作用,因为它需要一个数字而不是数组
您最好向已包含 quantity * cart_price # name it row_total
值的模型添加一列
然后您可以像这样轻松地对新列求和:
ModelName.sum(:row_total)
您似乎在尝试将单个元素相乘,ruby 不喜欢,因为它们本身就是数组。
正如 djaszczurowski 所建议的,我建议在将元素相乘后对数组求和。
扩展他的回答,我建议将 inject 替换为以下内容,因为(至少对我而言)它更能描述(我认为)您想对代码执行的操作:
@subtotal = @cart_content.sum { |count, price| count * price }
我正在 rails 中构建一个购物车应用程序。 CartItems 模型有一个整数类型的数量列和一个小数类型的 cart_price 列。对于添加到购物车的每个项目,都会向数据库添加一个新行 模型名称 CartItems。控制器获取数量和价格成功。但是当乘法时,我收到上面的错误消息。一旦乘法有效,我想将产品加在一起以获得购物车的小计。
def subtotal
@cart_content = @cart_item.pluck(:quantity,:cart_price)
@subtotal = @cart_content.inject(:*)
end
当我从 @subtotal 中删除 .inject(:*) 时,控制器会检索到正确的数据。
两个产品的视图输出示例,其中包含数量和价格值
[[3, #BigDecimal:7fc9a9b2d980,'0.1285E3',18(36)>], [1, # BigDecimal:7fc9a9b2d7c8,'0.115E3',9(27)>]]
我不是 100% 确定,但您可能想要实现的是:
@cart_content.sum { |c| c.inject(:*) }
- 单个 reduce 不起作用,因为它需要一个数字而不是数组
您最好向已包含 quantity * cart_price # name it row_total
然后您可以像这样轻松地对新列求和:
ModelName.sum(:row_total)
您似乎在尝试将单个元素相乘,ruby 不喜欢,因为它们本身就是数组。 正如 djaszczurowski 所建议的,我建议在将元素相乘后对数组求和。
扩展他的回答,我建议将 inject 替换为以下内容,因为(至少对我而言)它更能描述(我认为)您想对代码执行的操作:
@subtotal = @cart_content.sum { |count, price| count * price }