2012-05-05 48 views
2

我正在使用CarrierWave和嵌套窗體寶石。在Carrierwave github頁面(https://github.com/jnicklas/carrierwave)上使用標題爲「使上傳在表單重新顯示中工作」的部分,我能夠成功存儲緩存,以便即使用戶犯了錯誤,文件被保存。當我第一次點擊該頁面並點擊「上傳文件」時,它將起作用,並顯示文件的名稱以及指示已上傳文件類型的小縮略圖圖標。CarrierWave和嵌套窗體Gem重新顯示:: HTML文件輸入圖標

但是,重新顯示時文件輸入按鈕爲空,圖標消失。但是我知道它在那裏,因爲如果我再次提交有效信息並單獨保留文件輸入按鈕,它會創建一個新資源。這是我的代碼片段。

<%= nested_form_for @resource, :html=>{:multipart => true } do |f| %> 
    <p> 
     <%= f.label :title %><br /> 
     <%= f.text_field :title %> 
    </p> 

    <%= f.fields_for :attachments do |attachment_form| %> 
    <p> 
     <%= attachment_form.label :file %> 
     <% if !attachment_form.object.file.path.blank? %> 
      <% file_info = get_cache_file_info attachment_form.object.file.path %> 
      <%= image_tag(File.join('/tmp/cache/', file_info[:folder])) #THIS DISPLAY CORRECTLY %> 
     <% end %> 
     <%= attachment_form.file_field :file %> 
     <%= attachment_form.hidden_field :file_cache %> 
    </p> 
    <%= attachment_form.link_to_remove "Remove this attachment" %> 
    <% end %> 
    <%= f.link_to_add "Add attachment", :attachments %> 
    <p><%= f.submit %></p> 
<% end %> 

我想知道如果我必須編輯HTML文件輸入來顯示圖標或是否有其他一些Rails方式來照顧這一點。此外,image_tag正確顯示,但對於我的應用程序有用戶上傳文本文件,所以圖像不是很有幫助。

在此先感謝!

更新 我也嘗試設置「input」標籤的價值,像這樣:

<%= attachment_form.file_field :file, :value => "#{File.join(file_info[:folder], '/',attachment_form.object.file.identifier)}" %> 

而且也不能工作。 「輸入」標記的值設置正確,但仍顯示爲「未選擇文件」

+0

我有同樣的問題。你解決了這個問題嗎? – Dercni

+0

對不起......這是3年前,管理層放棄了這個項目。 – schmudu

+1

所以我不記得我是否能夠解決這個問題,或者如果這是我正在處理的一個懸而未決的問題 – schmudu

回答

0

CarrierWave的介紹並沒有使這一點非常清楚,但它聽起來像您的代碼正常運行「正確」。緩存區域僅用於確保您的附件在有效提交後保存。

This document解釋了文件輸入元素的FileList應該是隻讀的,這大概是出於安全原因。