Ruby on rails 从参数中的json响应获取可用的最低数字/整数

Ruby on rails 从参数中的json响应获取可用的最低数字/整数,ruby-on-rails,ruby,Ruby On Rails,Ruby,我不知道该如何质疑这个标题 但情况和问题是这样的: 我从API接受订单。在接受订单时,我想根据产品重量增加运费。我使用来自stamps的API来接收费率,我想从stamps API响应中收取最便宜的费率 这里是我的尝试,以获得在前端显示工作的速率,但在以下情况下似乎不起作用 ... rates = Shipstation::Shipment.get_rates({...}) cheapest_rate = rates.min_by { |rate| rate['shipmentCost'] }

我不知道该如何质疑这个标题

但情况和问题是这样的:

我从API接受订单。在接受订单时,我想根据产品重量增加运费。我使用来自stamps的API来接收费率,我想从stamps API响应中收取最便宜的费率

这里是我的尝试,以获得在前端显示工作的速率,但在以下情况下似乎不起作用

...
rates = Shipstation::Shipment.get_rates({...})

cheapest_rate = rates.min_by { |rate| rate['shipmentCost'] }
cheapest_rate_number = cheapest_rate["shipmentCost"]
错误:

第75行:最便宜的费率=费率.minu乘以{|费率|费率['shipmentCost']}

目标是获取可用的最低数字,将其用于@order.shipping\u rate,然后用于计算处理的总付款

@rates JSON响应如下所示:

 [{"serviceName"=>"USPS First Class Mail - Package", "serviceCode"=>"usps_first_class_mail", "shipmentCost"=>2.66, "otherCost"=>0.0}, {"serviceName"=>"USPS Priority Mail - Package", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>6.95, "otherCost"=>0.0}]
但有不止一种选择

如何使用当前代码和/或新代码从\shipmentCost\中获取最低整数,定义它,然后将其传递到模型,而不会出现上面的错误

[{serviceName=>USPS一级邮件包,serviceCode=>USPS一级邮件,shipmentCost=>2.66,otherCost=>0.0},{serviceName=>USPS优先邮件包,serviceCode=>USPS优先邮件,shipmentCost=>6.95,otherCost=>0.0}]

从这个散列数组中,您可以简单地执行以下操作:

rates = Shipstation::Shipment.get_rates({...})

cheapest_rate_number = rates.collect { |h| h["shipmentCost"].to_f }.min

您发布的eerror表明并非所有shipmentCost值都是整数或浮点值,因此我们只是将它们转换为浮点值以确保安全,即使有些是整数/浮点值,有些是字符串。

rate['shipmentCost']是一个字符串,您需要将其转换为可比较的实体,例如,使用to_i,为了让min_by比较价格,找到最便宜的价格。假设您正在用类似json.parse的东西解析json。。。你能发布解析后的JSON吗?@microspino我试过用{rate | rate['shipmentCost']]将最便宜的_rate=rates.min_发送到{u I},但得到了相同的错误。@rates值不是有效的JSON字符串,你能发布原始的和解析的JSON吗?我猜@rates\otherCost\=>0.0}的结尾会导致该JSON无效。请在下面的位置删除}end@uno另外,我在这里看到了你的另一个相关问题:我不确定让我们用不同的问题回答你问题的每一步是否公平。。。
rates = Shipstation::Shipment.get_rates({...})

cheapest_rate_number = rates.collect { |h| h["shipmentCost"].to_f }.min