2012-12-10 86 views
0

我试图将调查结果保存到csv文件,因此每次调查完成后都会向该文件添加一个新行。我有将数据库行导出到csv并允许您下载它的代码,但我不知道如何合并保存调查开始,或者甚至可能这样做?我有一个csv文件设置正确的标题。将表单结果保存为CSV - Rails

回答

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 +截断文件。

+0

我认为这就是我一直在寻找的!而不是键和值我需要把表单的参数或东西? – user1738017

+0

我添加了一点评论,以便更容易理解。你可以在CSV.open块中添加你想要的任何自定义逻辑。我只有一个简单的循环来解构我所拥有的数组,并将它的值写入到csv文件中。 – Smar

+0

这就是我所需要的,所以我需要创建一个数组,在其中放置注释,该数组包含表单中的所有信息? – user1738017

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 

这将导致你的log/文件夹surveys.log