2013-02-12 2 views
0

Je peux télécharger des fichiers image en pièces jointes à l'aide de Attachment_fu, mais lorsque j'essaie de modifier/modifier des images déjà téléchargées, cela ne fonctionne pas. Dans mon contrôleur, j'ai ceci:Problème de mise à jour de pièce jointe (image) en utilisant 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 est défini comme suit:

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 

La vue a file_field_tag ​​comme suit:

 <%= file_field_tag :showcase_category_image_file%> 

et mon modèle SponsorAccount dit:

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

Un code presque similaire fonctionne parfaitement bien dans 'create' mais ici, dans l'action 'update' où il y a déjà une valeur, ce code ne fonctionne pas.

Je reçois les msgs d'erreur ci-dessous: Terminé 500 Internal Server Error dans 1089ms ActionView :: Template :: erreur (méthode non définie public_filename » pour nulle: NilClass): Il est évident que cette erreur est dans l'action index où il essaie de lister tous les enregistrements et leurs pièces jointes. Cette pièce jointe étant vide après la mise à jour, cette erreur est renvoyée dans la partie redirect_to.

J'utilise REE1.8.7 et rails 3.2.9

S'il vous plaît aider!

Répondre

0

Ce problème a été résolu lorsque j'ai ajouté: multipart => true dans 'View'. J'utilise les rails 3.2.9 et les rails api a ceci à dire à propos de 'file_field_tag':

file_field_tag ​​(nom, options = {}) Lien Crée un champ de téléchargement de fichier. Si vous utilisez des téléchargements de fichiers, vous devrez également définir l'option multipart pour l'étiquette de formulaire:

Questions connexes