【问题标题】:Shopify Shipping Script Discount on Customer TagShopify 客户标签上的运输脚本折扣
【发布时间】:2018-01-16 17:32:50
【问题描述】:

我有一个 Shopify Plus 帐户,我正在尝试向我的配送脚本添加一个新条件,以控制向客户显示哪些配送方式。具体来说,我想为带有特定标签的客户提供免费送货服务。控制它

def freeItUp
  index = -1 
  if Input.cart.customer != nil and Input.cart.customer.tags != nil 
    Input.cart.customer.tags.index do |tag|
      return tag.upcase == "ALWAYSFREE"
    end 
  end
  return index > -1
end 

shippingMethodToDelete = (condition1 or condition2 or freeItUp) ? "UPS" : "FREE"

Output.shipping_rates = Input.shipping_rates.delete_if do |shipping_rate|
  puts shipping_rate.name
  shipping_rate.name.upcase.start_with?(shippingMethodToDelete)
end

但是,我不断收到以下错误

枚举器所需的纤维(您的购物车)

枚举器所需的光纤(空车)

我对 Ruby 不是很熟悉,但我在 Line Item 脚本中使用了相同的代码块(如上),没有任何问题。根据documentation,我相信我不会尝试访问不存在的属性。任何想法/帮助将不胜感激。

【问题讨论】:

    标签: ruby shopify


    【解决方案1】:

    你可以试试:

      def always_free_tag?
        return false if Input.cart.customer.nil? || Input.cart.customer.tags.empty?
        Input.cart.customer.tags.any? do |tag|
          tag.upcase == "ALWAYSFREE"
        end
      end
    
      shippingMethodToDelete = (condition1 or condition2 or always_free_tag?) ? "UPS" : "FREE"
    
      Output.shipping_rates = Input.shipping_rates.delete_if do |shipping_rate|
        puts shipping_rate.name
        shipping_rate.name.upcase.start_with?(shippingMethodToDelete)
      end
    

    另外,您能否分享更多堆栈跟踪以及它指向哪一行?

    编辑:太好了!很高兴这有效。我认为您的问题是您使用的是Array#index,它产生了块的索引(整数)(这一行:Input.cart.customer.tags.index)。然后,您在 Numeric 上调用 #upcase,这不是一种方法。如果您改为这样做,它将按预期工作:

    Input.cart.customer.tags.index do |i|
      return true if Input.cart.customer.tags[i].upcase == "ALWAYSFREE"
    end 
    

    另一个问题是,在 ruby​​ 中只有 nilfalse 在 ruby​​ 中是虚假的,因此您在 shippingMethodToDelete 中的条件可能没有返回正确的值。相反,我对其进行了更改,因此它始终返回一个布尔值,这样我们就可以确保正确搜索和评估 ALWAYSFREE。我认为您非常接近,但请查看 Enumerable#any 以获取更多示例。

    【讨论】:

    • 错误出现在代码的第四行,我唯一可用的错误是与“光纤”相关的错误,没有堆栈跟踪。您的解决方案似乎有效。你能告诉我你的解决方案修复了什么,以便我接受你的答案吗?
    • 很难确切知道出了什么问题,但这些堆栈跟踪并没有明显帮助!我添加了更多信息,如果这能回答您的问题,请告诉我。
    • @MarkCooper 我发现了另一个我忘记解释的问题。
    • 这就解释了。我对 Ruby 并没有很失望,所以这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多