使用Shopify脚本编辑器时无法从cart.line_items的#<Money>实例取值
Shopify 脚本编辑器提取Money实例数值的方法
调试时看到的#<Money:'2.5'>是Shopify脚本环境内置的Money类实例,不是无效值。直接打印这类对象时,Ruby会默认输出对象的结构描述,才会出现带类名和对象标识的调试内容,不是属性读取失败。
常用取值方式
- 提取可参与计算的纯数值:直接调用实例的
amount方法,就能拿到对应金额的浮点数。比如示例中存储的2.5,通过line_item.price.amount即可返回可直接运算的数字值,支持加减、大小比较等逻辑操作 - 提取适配店铺规则的展示文本:调用实例的
format方法,会自动按照店铺设置的货币精度、符号位置生成用户可读的金额字符串,无需手动拼接货币符号、补零处理小数位
常见避坑点
- 不要直接对Money实例做数值运算,比如直接写
line_item.price * 2会触发类型错误,必须先通过amount方法转成纯数值后再参与计算 - 不要通过切割
#<Money:'2.5'>这类调试输出字符串来抠取数字值,这类结构是Ruby对象的默认调试输出,在不同脚本环境版本中格式可能变动,通过字符串截取的方式兼容性极差,非常容易出现计算偏差 - 如果你之前调用金额属性返回的是对象结构而非预期数值,本质是没有调用对应的取值方法,不是接口属性失效
参考代码示例
# 正确读取购物车行项目金额的写法 cart.line_items.each do |line_item| # 获取可计算的纯价格数值 unit_price = line_item.price.amount # 获取可直接展示的格式化金额文本 display_price = line_item.price.format # 计算行项目总价时,先转数值再计算 line_total = unit_price * line_item.quantity end
内容的提问来源于stack exchange,提问作者kashif shabbir
相关产品推荐
相关产品推荐

