paperclip在validates_presence_of上失败

时间:2011-01-13 20:32:00

标签: ruby-on-rails ruby ruby-on-rails-3 paperclip

好的,所以我有一个模型,在那个模型中我有

class User < ActiveRecord::Base
  validates_presence_of :name
  has_attached_file :picture, :styles => { :medium => "300x300>", :thumb => "100x100>",:tiny => "25x25>" }
end

当我创建用户并上传图片而不输入名称时,我会收到预期的消息

1 error prohibited this user from being saved.
There were problems with the following fields:
    * Name can't be blank

但是图像消失了...当我看到我的控制台时,我看到了

        [paperclip] identify -format %wx%h '/var/folders/QK/QK+tCPT-Gx8yGDxVQbDuF++++TI/-Tmp-/stream20110113-19714-1ucz75p-0.jpg[0]' 2>/dev/null
        [paperclip] convert '/var/folders/QK/QK+tCPT-Gx8yGDxVQbDuF++++TI/-Tmp-/stream20110113-19714-1ucz75p-0.jpg[0]' -resize "25x25>" '/var/folders/QK/QK+tCPT-Gx8yGDxVQbDuF++++TI/-Tmp-/stream20110113-19714-1ucz75p-020110113-19714-r839l2-0' 2>/dev/null

但是图片在新页面上消失了....有没有办法保留这个图像,所以使用该页面的任何人都不必再次浏览图像

4 个答案:

答案 0 :(得分:1)

本文将介绍此过程:http://ryantownsend.co.uk/articles/storing-paperclip-file-uploads-when-validation-fails.html 就个人而言,我还没有尝试过。

答案 1 :(得分:0)

基本上没有。这是服务器无法控制的浏览器行为。如果您担心模型中其他地方的验证导致用户必须重新选择并重新上传其图像,那么我建议您将文件附件分开一步。

答案 2 :(得分:0)

浏览器在返回时会重置表单。您可以通过在后台使用ajax上传文件来模拟看起来像一个步骤的东西,并且让javascripty良好保持表单不会提交直到文件上传。

答案 3 :(得分:0)

更好的想法可能是在表单中添加客户端验证,以便在用户输入无效数据时立即提示他们更正它。如果您只支持IE10 +,则可以使用HTML5验证,否则您将必须使用Javascript验证。