2013-02-12 46 views
0

我能夠使用Attachment_fu將圖片文件作爲附件上傳,但是當我嘗試編輯/修改已經上傳的圖片時,它不起作用。 在我的控制器我有這樣的:使用Attachment_fu更新文件附件(圖片)問題

 def update 
      @sponsor_account = SponsorAccount.find(params[:id]) 
      if params[:showcase_category_image_file] &&   
      !params[:showcase_category_image_file].blank? 
      @sponsor_account.showcase_category_image = 
      ShowcaseCategoryImage.new(:uploaded_data => 
      params[:showcase_category_image_file]) 
     ***This logs - Now the file name is: *** 
      Rails.logger.info("Now the file name is: # 
      {@sponsor_account.showcase_category_image.filename}") 
      end 
     @sponsor_account.update_attributes(params[:sponsor_account]) 
    if @sponsor_account.save 
     flash[:notice] = "Showcase category #{@sponsor_account.name} was updated!" 
    else 
     flash[:errors] = @sponsor_account.errors 
    end 
     redirect_to sponsor_accounts_path 
    end 

ShowcaseCategoryImage定義如下:

has_attachment :content_type => :image, 
      :storage => :file_system, 
      :max_size => 5.megabytes, 
      :thumbnails => { :large => [350, 100], :medium => [200, 90], :thumb => 
       [35,35], :preview => [60,60] } 

    validates_as_attachment 

視圖有一個file_field_tag如下:

 <%= file_field_tag :showcase_category_image_file%> 

和我SponsorAccount模型認爲:

  has_one :showcase_category_image, :as => :owner, :dependent => :destroy 
     validates_presence_of :showcase_category_image, :on => :create 

幾乎類似的代碼在'create'中完全可以正常工作,但在'update'操作中已經有一個值,這段代碼不起作用。

我提示以下錯誤:封郵件: 完成500內部服務器錯誤1089ms ::的ActionView ::模板錯誤(未定義的方法`public_filename」的零:NilClass): 這顯然是錯誤的索引操作,其中它會嘗試列出所有記錄及其附件。由於此更新在更新後爲空,因此此錯誤將在redirect_to部件中引發。

我正在使用REE1.8.7和rails 3.2.9

請幫忙!

回答

0

當我在'視圖'中添加multipart => true時,此問題已解決。我正在使用rails 3.2.9,並且rails api有關於'file_field_tag'的說法:

file_field_tag(name,options = {})鏈接 創建文件上載字段。 如果您正在使用文件上傳,則還需要爲表單標記設置多部分選項: