2011-01-13 64 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驗證。