Ruby on Rails中多文件上传的最佳方法

时间:2010-12-06 14:08:25

标签: ruby-on-rails

我在这里问了一个类似的问题但答案不成功: Uploadify + Paperclip + Rails nested association before_save

所以我会重新提出我的问题:

Rails中一次上传多个文件并将它们关联到尚未保存的对象的最佳方法是什么? (例如,模型(女孩)应用程序表单在创建操作完成时保存到数据库(按下保存按钮)。

我想到了很多想法(在尝试上传图像之前用ajax保存对象,在图像中添加一个标记,然后在保存模型对象后添加模型的ID)但我很确定很多人都有做到了这一点,有一种共同的方法或最好的方法来做到这一点。

提前谢谢! 马丁。

2 个答案:

答案 0 :(得分:3)

我在我的一个rails 3应用程序中使用它:

= form_for :import_csv, :url => {:action => :import_csv}, :html => {:multipart => true} do |f|
  = f.file_field :csv
  = f.submit 'Upload CSV'

这会创建一个可以使用

检索的临时文件
CSV.open(params[:import_csv][:csv].tempfile.path)

我认为没有理由不能将其扩展到多次上传,并在params[:import_csv][:whatever]

访问

注意**在rails 3.0.3中,临时文件的处理略有改变,这就是为什么上面的代码使用.tempfile.path,这在以前的版本中是不需要的。

答案 1 :(得分:0)

一年多以前,我遇到了类似的问题,找不到一个现成的解决方案,因此做了如下: 1.使用SWFUpload上传图像到“store_image”动作,该动作存储,调整大小,...,并返回缩略图的路径和上传图像的ID。
2.使用JS将图像ID放入隐藏字段值。我使用单字段,其值如“2312111:3231231:323212” 3.创建“主”对象时,按ID查找上传的图像,并确定它们与主题的关系。

垃圾收集器也会删除3天前创建的无关图像。垃圾收集器每天都由cron运行。

至于我,这是最优雅的解决方案。

__
抱歉我的英文不好