使用Attachment_fu发布更新文件附件(图像)

时间:2013-02-12 12:34:46

标签: ruby-on-rails-3 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

几乎相似的代码在“创建”中完全正常,但在“更新”操作中已经存在值,此代码无效。

我收到以下错误信息:      在1089ms内完成500内部服务器错误      ActionView :: Template :: Error(未定义的方法`public_filename'代表nil:NilClass): 显然,此错误发生在索引操作中,它会尝试列出所有记录及其附件。由于此更新在更新后为空,因此会在redirect_to部分中抛出此错误。

我正在使用REE1.8.7和rails 3.2.9

请帮忙!

1 个答案:

答案 0 :(得分:0)

我添加时解决了这个问题:multipart =&gt;在'视图'中为true。我正在使用rails 3.2.9而rails api对此有关'file_field_tag'的说法:

file_field_tag(name,options = {})链接 创建文件上载字段。 如果您使用的是文件上传,则还需要为表单标记设置multipart选项: