我有一个包含~24000个产品的阵列。哈希将保存为CSV并使用产品导入方法上传到Shopify商店。
当我手动创建单个产品时,将根据产品标题自动生成产品网址密钥/句柄。使用产品导入方法(CSV)时,我必须自己指定。
如何将标题转换为产品网址密钥?
示例:
title_1 = "AH Verse frietaardappelen"
url_key_1 = "ah-verse-frietaardappelen"
title_2 = "Lay's Sensations red sweet paprika"
url_key_2 = "lay-s-sensations-red-sweet-paprika"
我目前正在使用:
<title>.downcase.gsub(' ','-').gsub("'", '-')
但是这并没有从标题中删除%
,$
,&
,/
等。我想确保url键/产品手柄尽可能干净。
必须有更好的方法来做到这一点,我接下来可以尝试什么?
答案 0 :(得分:1)
Shopify的Liquid gem中有(私人)to_handle
方法:
def to_handle(str)
result = str.dup
result.downcase!
result.delete!("'\"()[]")
result.gsub!(/\W+/, '-')
result.gsub!(/-+\z/, '') if result[-1] == '-'
result.gsub!(/\A-+/, '') if result[0] == '-'
result
end
示例:
to_handle("AH Verse frietaardappelen")
#=> "ah-verse-frietaardappelen"
to_handle("Lay's Sensations red sweet paprika")
#=> "lays-sensations-red-sweet-paprika"
答案 1 :(得分:0)
查看gem String Urlize,它可以帮助您编写脚本来执行此操作。
答案 2 :(得分:0)
我建议您使用Rails ActiveSupport :: Inflector#参数化解决方案 - http://apidock.com/rails/ActiveSupport/Inflector/parameterize
它处理了很多边缘情况,应该适合你。
答案 3 :(得分:0)
最好的方法是使用参数化方法:
title_1 = "AH Verse $frietaardappelen".parameterize
Output: "ah-verse-frietaardappelen"
title_2 = "Lay's Sensations red %sweet paprika".parameterize
output: "lay-s-sensations-red-sweet-paprika"