我試圖將CSV文件中的行上載到我的數據庫中,但標頭中的空格不斷讓我感到困惑。因此,例如,標題將是「Order Item Id」,我希望散列鍵爲「order_item_id」。以下是我的代碼現在的樣子:將空格轉換爲Rails中CSV標頭的下劃線
CSV.foreach(file.path, headers:true, :header_converters => lambda { |h| h.try(:downcase) }, col_sep: ';') do |row|
product_hash = row.to_hash
product = OrderCsv.where(id: product_hash["id"])
if product.count ==1
product.first.update_attributes(product_hash)
else
user.order_csvs.create!(product_hash)
end
end
我試過編輯product_hash與product_hash.keys.each {| k | k =「...」} 但它沒有做任何事情。我也嘗試創建一個像downcasing那樣的標題轉換器,但是我也無法做到這一點。對不起,如果這是一個新問題,但我一直在尋找答案,他們都沒有爲我工作。非常感謝!
你也可以使用一個修改'if'代替如果一個空的標題是''''''''''''''''h.downcase.gsub('','_')如果h'或甚至'h.to_s.downcase.gsub('','_')好的。 – Stefan
所以我用這個,它的工作原理,但現在當我嘗試上傳文件時,我得到了一個「UTF-8無效的字節序列」錯誤。結果是隻有第一行從文件上傳。這有可能是與回車/新行搞亂了嗎?我從來沒有在 –
之前得到過這些錯誤,我認爲你的問題與新代碼沒有任何關係,很可能這是該文件的問題,之前你沒有看到,因爲它沒有得到這麼遠(因爲標題有問題)。 – taglia