我正在尝试将调查结果保存到csv文件中,因此每次调查完成后,它都会在文件中添加一个新行。我有代码将数据库行导出到csv并允许你下载它,但我不知道如何合并保存调查开始,或者甚至可能?我有一个csv文件设置正确的标题。
答案 0 :(得分:1)
当调用create
函数时(控制器中表单的提交所针对的操作;在REST控制器上创建),你可以只添加一些自定义逻辑来将数据从表单转换为csv结构你想。
Ruby内置CSV模块,可用于读取和写入CSV文件。
所以你需要像下面这样的东西
require "csv"
CSV.open "output.csv", "a+" do |csv|
# example logic from another script how to populate the file
times.each do |key, value|
csv << [ key, value ]
end
end
您只需要根据需要定义行的结构,此示例每行抛出两列。
编辑:a +使文件从末尾(新行)写入而不是原始的w +来截断文件。
答案 1 :(得分:0)
可能的解决方案是使用记录器。在您的应用程序控制器中:
def surveys
@@surveys_log ||= Logger.new("#{Rails.root}/log/surveys.log")
end
您希望记录调查的任何地方:
surveys.info @survey.to_csv # you'll need to implement "to_csv" yourself
这会在surveys.log
文件夹中生成log/
。