Shopify 插件脚本编辑器 - 未定义的方法
Shopify plugin Script Editor - undefined method
我在 Shopify 中使用名为 Script Editor 的插件工作,它给出了一个错误:
undefined method 'end_with?' for nil
。
我对 Ruby 的语法不太好,想寻求帮助,了解如果客户在这一行发送的电子邮件为空或不存在,如何退出命令:if customer && customer.email.end_with?("@mycompany.com")
这是Ruby中的代码:
Input.cart.line_items.each do |line_item|
next if line_item.variant.product.gift_card?
discount = 1
customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com") //<< needs a better condition
message = "Lorem Ipsum"
discount = 0.2
end
next unless discount < 1
line_item.change_line_price(
line_item.line_price * discount,
message: message,
)
end
Output.cart = Input.cart
您可以使用 ruby 的安全导航运算符“&.”。
Input.cart.line_items.each do |line_item|
next if line_item.variant.product.gift_card?
discount = 1
customer = Input.cart.customer
if customer&.email&.end_with?("@mycompany.com")
message = "Lorem Ipsum"
discount = 0.2
end
next unless discount < 1
line_item.change_line_price(
line_item.line_price * discount,
message: message,
)
end
Output.cart = Input.cart
来自doc's:
&.
,称为“安全导航运算符”,允许在接收者为零时跳过方法调用。如果调用被跳过,它 returns nil 并且不评估方法的参数。
参考:https://ruby-doc.org/core-2.6/doc/syntax/calling_methods_rdoc.html
我在 Shopify 中使用名为 Script Editor 的插件工作,它给出了一个错误:undefined method 'end_with?' for nil
。
我对 Ruby 的语法不太好,想寻求帮助,了解如果客户在这一行发送的电子邮件为空或不存在,如何退出命令:if customer && customer.email.end_with?("@mycompany.com")
这是Ruby中的代码:
Input.cart.line_items.each do |line_item|
next if line_item.variant.product.gift_card?
discount = 1
customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com") //<< needs a better condition
message = "Lorem Ipsum"
discount = 0.2
end
next unless discount < 1
line_item.change_line_price(
line_item.line_price * discount,
message: message,
)
end
Output.cart = Input.cart
您可以使用 ruby 的安全导航运算符“&.”。
Input.cart.line_items.each do |line_item|
next if line_item.variant.product.gift_card?
discount = 1
customer = Input.cart.customer
if customer&.email&.end_with?("@mycompany.com")
message = "Lorem Ipsum"
discount = 0.2
end
next unless discount < 1
line_item.change_line_price(
line_item.line_price * discount,
message: message,
)
end
Output.cart = Input.cart
来自doc's:
&.
,称为“安全导航运算符”,允许在接收者为零时跳过方法调用。如果调用被跳过,它 returns nil 并且不评估方法的参数。
参考:https://ruby-doc.org/core-2.6/doc/syntax/calling_methods_rdoc.html