2011-01-13 72 views
0

行,所以我有一个模型,在该模型中,我有回形针在validates_presence_of失败

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 

但图像消失在新的p年龄....有没有一种方法来保存此图像,以便任何人使用该页面不必再次浏览图像

回答

0

基本上没有。这是服务器无法控制的浏览器行为。如果你担心模型中其他地方的验证会导致用户不得不重新选择并重新上传他们的图像,那么我建议将该文件附件作为一个单独的步骤。

0

浏览器在重新显示表单时重置表单。您可以通过在后台使用ajax上传文件来模拟看起来像是单个步骤的内容,并让javascripty保持表单不会提交,直到文件上传。

0

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