2012-12-14 13 views
5

Rails 3.2.9 uygulamasını geliştiriyorum ve dosya yükleyici olarak Carrierwave kullanıyorum.carrierwave content_type her zaman nil

  1. Add bir başlatıcı veya yükleyen (lar) 'carrierwave/işleme/mime_types' gerektirir: Carriverwave benioku doğru CONTENT_TYPE içerik almak için bir yol işaret etmektedir.
  2. Yükleyicinize CarrierWave :: MimeTypes ekleyin.
  3. İşlemi ekle: set_content_type yükleyicilere (ler). Bu konuda

Baz, My yükleyici aşağıdaki gibidir: Yükleme dosyasında sonra

mount_uploader :file, AttachmentUploader 

Ancak, hep var content_type nil:

Benim modelinde
# encoding: utf-8 
require 'carrierwave/processing/mime_types' 
class AttachmentUploader < CarrierWave::Uploader::Base 
    include CarrierWave::MimeTypes 
    storage :file 
    def store_dir 
    "#{base_store_dir}/#{model.id}" 
    end 
    process :set_content_type 

end 

, dosya olarak yükleyen kişiyle monte:

1.9.3-p327 :013 > a.file.class 
=> AttachmentUploader 
1.9.3-p327 :010 > a.file.file 
=> #<CarrierWave::SanitizedFile:0x00000004046330 @file="uploads/course/000/000/026/attachment_file/6/myIcon.png", @original_filename=nil, @content_type=nil> 

Herhangi bir öneri? Teşekkürler.

PS: 'u zaten Gemfile numaralı telefonuma ekledim.

cevap

0

Sadece aynı soruna çarptım ve kolay bir düzeltme bulamadım. Benim geçici çözüm

umarım sorunların düzeltilmesini olsa

@model.content_type = params[:file_upload][:attachment].content_type 

Bu işleri ile oluşturmak/güncelleme sürecinde bunu modeline content_type sütun ekleyin ve belirlemekti.

1

aynı sorun benim Modeli Bu çalıştı Had gibi daha sonra kurulum yükleyici dosyası ekleyin Ben Yükleyicimizi monte

before_save :set_mime_type     

    def set_mime_type 
     self.mimetype = Mime::Type.lookup_by_extension(File.extname(self.cf_filename.to_s)[1..-1]) 
    end 

Not nerede dosyası: Eğer tablodaki bir mimetype alanını olmalı