我的导出csvs的方法有什么问题?

时间:2012-11-13 23:46:43

标签: ruby csv

我正在尝试将某些数据从控制台导出到桌面上的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>

我做错了什么?

2 个答案:

答案 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