2014-09-22 36 views
0

我有一個陣列~24000個產品。散列將被保存爲CSV並使用產品導入方法上傳到Shopify商店。如何將〜24000個產品標題轉換爲URL鍵?

當我手動創建單個產品時,會根據產品標題自動生成產品URL鍵/句柄。使用產品導入方法(CSV)時,我必須自己指定。

如何將標題轉換爲產品url密鑰?

例子:

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

試'title_2.downcase.gsub(/ \ W + /,' - ')' – 2014-09-22 10:27:59

+0

爲什麼t他的問題擱置? 「不清楚你問的是什麼」?這不能得到更清楚的。 – narzero 2014-09-22 13:38:35

回答

0

有一個(私人)to_handle方法Shopify的液體寶石:

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" 
+0

這是迄今爲止最乾淨和最輕量級的解決方案,謝謝。 – narzero 2014-09-22 12:31:14

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" 
+0

我得到'Ruby 1.9不支持Unicode規範化,但是 =>「ah-verse-frietaardappelen」'。返回的值是正確的,但是我應該擔心「Ruby 1.9不支持Unicode規範化」部分嗎? – narzero 2014-09-22 11:03:59

+0

@narzero你使用哪個版本? – 2014-09-22 11:44:45

+0

我使用Ruby 2.1.2與activesupport 2.3.18 – narzero 2014-09-22 11:47:02