2014-03-12 18 views
0

我想創建一個散列,從具有一堆數據的CSV文件 我的ruby文件的代碼看起來像創建csv文件哈希給出錯誤

hersteller = Hash[CSV.read("db/red.csv", col_sep: ',', row_sep: :auto, headers: true).map {|row| [row["lieferant_nr"], row["beschreibung"]]}] #this is line number 45 

CSV.foreach("db/red.csv", col_sep: ',', row_sep: :auto, headers: true) do |row| # map keys 

    hash = Hash[row.map {|k, v| mapping[k] ? [mapping[k], v && v.strip.gsub("\u00A0", "")] : nil}.compact] # ignore NULL values 

    hash.reject! {|k, v| v == "NULL"} # get hersteller names 

    hash["hersteller"] = hersteller[hash["hersteller_nummer"]].strip.gsub("\u00A0", "") if hash["hersteller_nummer"].present? #this is line number 54 

這給了我,當我創建哈希錯誤

未定義的方法strip' for nil:NilClass /home/anish/helios/dynalink/db/seeds.rb:54:in塊在頂部(必需)> ' /home/anish/helios/dynalink/db/seeds.rb:46:in頂部(必需)>'

任何人都可以建議我什麼地方出了錯這裏.... 預先感謝

回答

0

變化:

hash["hersteller"] = hersteller[hash["hersteller_nummer"]].strip.gsub("\u00A0", "") if hash["hersteller_nummer"].present? #this is line number 54 

到:

hash["hersteller"] = hersteller[hash["hersteller_nummer"]].strip.gsub("\u00A0", "") if hersteller[hash["hersteller_nummer"]].present? 

你應該檢查存在hersteller[hash["hersteller_nummer"]]而不是hash["hersteller_nummer"]