每个循环的Ruby将结果传递给方法参数

时间:2015-08-01 16:05:11

标签: ruby foreach

我是一名新手程序员,过去几周一直在教自己Ruby。我对程序(CSV导入程序/ JSON导出程序)有疑问,希望有人可以帮忙。

def convert_csv_to_json(csv_file_name)
    CSV.foreach(csv_file_name) do |row|
      JSON.pretty_generate(row)
    end
    test = FileExportManager.new
    test.export_json_to_computer(csv_file_in_json)
  end

我希望export_json_to_computer方法将foreach循环的结果导出为参数。我无法做到这一点。有人可以提供任何建议吗?感谢。

编辑 - 包含已编辑的版本FileExportManager类

class FileExportManager

  def export_json_to_computer(file)
    write_to_file(file)
  end

  def assign_file_name
# this method names file and assigns .json extension
    File.new(file_name, 'w')
  end

  def write_to_file(file)
    File.open(file_name, 'w') do |row|
      row.puts file
    end
  end
end

1 个答案:

答案 0 :(得分:-1)

根据您当前构建代码的方式,您希望将csv文件读入内存,然后将其转换为json并将字符串传递给export_json_to_computer文件,如下所示:

def convert_csv_to_json(csv_file_name)
  rows = JSON.pretty_generate(CSV.read(csv_file_name).to_a)
  test = FileExportManager.new
  test.export_json_to_computer(rows)
end