2011-08-03 41 views
1

我正在Rails 3中建立一個自定義圖像上傳表單(回形針/ carrierwave不是我們設置的選項),並且需要執行經典的「驗證失敗時持久化圖像」方案。在Rails 3中做什麼「最佳實踐」方法?Rails 3緩存文件上傳

摘要:

  1. 用戶填寫表格圖像
  2. 用戶點擊「發送表單」
  3. 表單驗證失敗
  4. 用戶現在應該看到他們在形式上傳的,而不是需要的圖像再次選擇它
+0

閱讀載波源代碼 – iwasrobbed

+0

你將不得不實施像carrierwave這樣的東西。查看「使上傳工作跨表單重新顯示」下的carrierwave自述文件。 https://github.com/jnicklas/carrierwave/blob/master/README.md –

+0

感謝您的建議傢伙 - 你們中的任何人都有一個想法,這將位於源代碼的位置?我很難找到它... – Houen

回答

0

如果你從頭開始做,你必須把文件放入上傳目錄(或創建一個在其中存儲新目錄以存儲不同版本),並將臨時文件名存儲到模型的一個未保留字段中。

例如,不持久化領域可以被命名爲photo_cache_dir:

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

在模板中,您只需檢查該字段存在:

​​

...在那情況下,使用自己的邏輯,顯示上傳的照片。

我不知道這是否是最佳做法,但這是我正在使用的,它的工作得很好。

1

file_upload_cache gem與carrierwave兼容,適用於carrierwave不起作用的情況。

它也可以獨立工作,無需使用載波。

的文檔是在這裏:https://github.com/kenmazaika/file_upload_cache

披露:我創作這個寶石。