2014-09-12 160 views
0

我使用formtastic Gem將圖片上傳到我的圖像模型。Ruby on Rails,Formtastic Gem圖片上傳

用戶模型有很多圖片

我使用formtastic寶石創建自己的狀態:

= semantic_form_for @user, :remote => true, :html => { :class => 'formtastic' } do |f| 
    = f.semantic_fields_for :images, @image do |image| 
    = image.input :file 
      :label => false, 
      :as => :file 

要求通過上傳圖片。該表單還有兩個字段名稱和說明! 選擇要上傳的文件後,會顯示所選的文件名。

如果我填寫所有必填字段並點擊提交,它的工作原理完全正常,但如果在填寫所有必填字段之前點擊提交,表單會要求我填寫必填字段,並要求我再次選擇文件。

預期的行爲是表單只應要求我填寫缺少的必填字段,並且它應該記住以前選擇的文件。 有誰知道它爲什麼這樣做?

任何幫助將不勝感激

回答

0

當表單被提交時,該文件被附加到請求。當錯誤頁面返回時,表單字段的值由服務器從提交的信息中提供以重寫頁面。但是,服務器不知道文件來自系統的什麼位置,因此無法從系統中重新獲取文件以預先填充表單。 任何可能預先填充文件字段的內容都必須能夠進入計算機上的文件系統。只有在您自己瀏覽文件時才允許使用此功能。 一對夫婦的解決方案提出了在這裏:

How to persist file upload fields after a rails validation error.

第一對夫婦的答案建議使用附件管理寶石樣回形針;如果你想避免使用另一個gem,我喜歡第三個,它推薦通過javascript對數據進行客戶端驗證 - 基本上阻止用戶首先將信息提交給服務器。當然,你仍然想在服務器端進行驗證。