2012-12-11 56 views
8

我用回形針化身連接到我的用戶,在我的模型:Rails的回形針,編輯的形式是,file_field未分配

has_attached_file :avatar, 
    :styles => {square_tiny: '50x50#', square_small: '100x100#', square: '200x200#'} 

我有一個表格

<%= form_for(@user_profile, 
     :url => { :controller => :user_profiles, :action => :update_general_info, :id => @user_profile.id }, 
      :html => { :multipart => true, 
       :class=> "form-horizontal" }) do |f| %> 

      <div class="control-group"> 
       <%= f.label :avatar, :class => "control-label" %> 
       <div class="controls"> 
        <%= f.file_field :avatar %> 
       </div> 
      </div> 

.... 

<% end %> 

上傳的作品完美,但我回來並編輯我的用戶,文件字段顯示'沒有選擇文件'。而且,由於我驗證了該頭像的存在,每次用戶編輯他的詳細信息,他都必須再次上傳他的頭像...

我該如何解決這個問題?

我認爲:multipart => true會幫助,但它沒有。

+0

你是否已經解決了這個問題? –

回答

5

頁面設置文件字段的值絕對沒有好的方法,這是出於安全原因。

如果瀏覽器允許頁面或JS腳本將值設置爲允許惡意頁面使用某些系統或密碼文件預設文件字段值的文件字段。這將是一個巨大的安全漏洞。

我在這種情況下所做的是將已保存的文件顯示爲用戶可單擊下載的鏈接。然後,您可以提供小的AJAX鏈接進行刪除(該文件通過AJAX調用刪除,鏈接被新文件輸入替換)並替換(鏈接替換爲文件輸入)。

你最後的選擇是使用AJAX上傳文件。如果你使用AJAX進行文件上傳,你會發布到一個隱藏的框架,所以文件輸入將保持其選定的值。 無論哪種方式請記住,文件字段值的任何更改必須由用戶啓動。