我正在尝试将某些数据从控制台导出到桌面上的csv文件中。我在模型中创建了一个export_csv方法,从控制台
运行def export_csv
csv_string = CSV.generate do |csv|
csv << [
'Animal', 'Subanimal'
]
Animal.all.each do |animal|
subanimals = animal.children
unless subanimals.blank?
subanimals.each do |subanimal|
csv << [
animal.name, subanimal.name
]
end
end
end
end
filename = "animals_and_subanimals.csv"
CSV.open(filename, 'w') do |csv|
csv << csv_string
end
end
但它正在破坏并给我这个错误
NoMethodError: undefined method `map' for #<String:0x007f90ce247000>
我做错了什么?
答案 0 :(得分:1)
csv_string
已经是CSV格式的字符串。只需将其写入磁盘即可:
File.open(filename, 'w') {|f| f.puts csv_string}
你的最后一个CSV阻止是什么让你失望。
或者,您可以随时创建文件,而不是在内存中构建(可能?)大字符串。
答案 1 :(得分:1)
在这里,让我试着为你清理它:
def export_csv
filename = "animals_and_subanimals.csv"
CSV.open(filename, 'w') do |csv|
csv << ['Animal', 'Subanimal']
Animal.all.each do |animal|
subanimals = animal.children
unless subanimals.blank?
subanimals.each do |subanimal|
csv << [animal.name, subanimal.name]
end
end
end
end
end