Rails 3缓存文件上传

时间:2011-08-03 12:47:44

标签: ruby-on-rails ruby-on-rails-3 image file-upload

我正在Rails 3中构建自定义图像上传表单(paperclip / carrierwave不是我们设置的选项),需要在验证失败的情况下执行经典的“持久图像”。在Rails 3中执行此操作的“最佳实践”方法是什么?

要点:

  1. 用户填写带图片的表单
  2. 用户点击“发送表单”
  3. 表单验证失败
  4. 用户现在应该看到他们在表单中上传的图片,而不需要再次选择

2 个答案:

答案 0 :(得分:1)

file_upload_cache gem与carrierwave兼容,适用于carrierwave无效的情况。

它也可以独立运行,不使用carrierwave。

文档在这里:https://github.com/kenmazaika/file_upload_cache

披露:我创作了这个宝石。

答案 1 :(得分:0)

如果您是从头开始,则必须将文件放入uploads目录(或在其中创建一个新目录以存储不同版本),并将临时文件名存储到模型的一个非持久字段中

例如,非持久字段可以命名为photo_cache_dir:

attr_accessible :foo, :bar, :photo_cache_dir
attr_accessor :photo_cache_dir

在模板中,您只需检查该字段是否存在:

@your_model.photo_cache_dir.present?

...在这种情况下,使用您自己的逻辑,显示上传的照片。

我不知道这是不是最好的做法,但这是我正在使用的,而且效果很好。