将表单结果保存为CSV - Rails

时间:2012-12-10 13:42:26

标签: ruby-on-rails forms csv

我正在尝试将调查结果保存到csv文件中,因此每次调查完成后,它都会在文件中添加一个新行。我有代码将数据库行导出到csv并允许你下载它,但我不知道如何合并保存调查开始,或者甚至可能?我有一个csv文件设置正确的标题。

2 个答案:

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