我在下面有一个简单的CSV上传器,它逐行显示并创建一个新记录(事件)。我还使用了unidecoder gem,并希望在CSV上传器创建的每个记录中的字段(描述字段)上调用to_ascii
方法。听起来应该很简单,但我不熟悉迭代CSV文件。
上传者:
def self.import(file)
CSV.foreach(file.path, headers: true, encoding: "windows-1252:utf-8") do |row|
Event.create! row.to_hash
end
end
正确实施此方法:
def self.import(file)
CSV.foreach(file.path, headers: true, encoding: "windows-1252:utf-8") do |row|
description = row[2]
row[2] = description.to_ascii
Event.create! row.to_hash
end
end
谢谢!
答案 0 :(得分:2)
试试这个:
CSV.foreach(file.path, headers: true, encoding: "windows-1252:utf-8") do |row|
unless row[1].blank?
description = row[1] # Change 1 for the correct column
row[1] = description.to_ascii
end
Event.create! row
end
如果描述不是空白(空),请提取并更新值(描述),然后保存。
row
是逗号分隔值的数组,例如name, description, address
之类的CSV文件,row[1]
具有描述值。