「セール」のタグが付いた製品のプロモーション コードの使用をブロックするスクリプトを作成しています。スクリプトの 1 行目にエラー メッセージが表示されますが、解決方法がわかりません。それ以外の場合、スクリプトは正常に機能し、期待どおりに動作します。
このエラーを解決する方法について何か提案はありますか?
# ================================ Customizable Settings ================================
# ================================================================
# Define the tag for products where discounts are not allowed.
# ================================================================
SALE_TAGS = ['sale', 'Sale'] # Tags used to identify sale products
REJECTION_MESSAGE = "Discount codes can't be used with Sale products"
# ================================ Script Code (do not edit) ================================
# ================================================================
# ProductSelector
# Finds matching products by the entered criteria.
# ================================================================
class ProductSelector
def initialize(tags)
@tags = tags.map(&:downcase)
end
def match?(line_item)
product_tags = line_item.variant.product.tags.map(&:downcase)
(@tags & product_tags).any?
end
end
# ================================================================
# DisableDiscountCodesForProductsCampaign
# If any matching items are in the cart, the discount code is rejected.
# ================================================================
class DisableDiscountCodesForProductsCampaign
def initialize(tags, message)
@product_selector = ProductSelector.new(tags)
@rejection_message = message
end
def run(cart)
return if cart.discount_code.nil?
if cart.line_items.any? { |line_item| @product_selector.match?(line_item) }
cart.discount_code.reject(message: @rejection_message)
end
end
end
# ================================================================
# Campaign Execution
# ================================================================
campaign = DisableDiscountCodesForProductsCampaign.new(SALE_TAGS, REJECTION_MESSAGE)
campaign.run(Input.cart)
Output.cart = Input.cart
この問題も発生しました。カート入力からテストしていたコードを削除することで問題を解決しました。
割引コードを削除したら、コード エディターで小さな変更を加えて (スペースを追加するなど)、エラー チェッカーを再度トリガーします。これで解決されるはずです。