2014-10-05 2 views
2
class ImageUploader < CarrierWave::Uploader::Base 

    # Include RMagick or MiniMagick support: 
    include CarrierWave::RMagick 
    # include CarrierWave::MiniMagick 

    # Choose what kind of storage to use for this uploader: 
    storage :file 
    # storage :fog 

    # Override the directory where uploaded files will be stored. 
    # This is a sensible default for uploaders that are meant to be mounted: 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    def default_url 
    ActionController::Base.helpers.asset_path("fallback/" + [main, "default.png"].compact.join('_')) 
    end 

    # Create different versions of your uploaded files: 
    version :thumb do 
    process :resize_to_fit => [50, 50] 
    end 

    version :main do 
    process :auto_orient 
    process :resize_to_fit => [300, 360] 
    end 

    def auto_orient 
    manipulate! do |img| 
     img = img.auto_orient 
    end 
    end 
end 

Я мой образом по умолчанию загружается в приложении/активы/изображения/запасной вариант/главный/default.pngRails 4 - CarrierWave не работает с умолчанием ресурса изображения активов

Это будет следующим умолчанию ресурса стандартного трубопровода активов, описываемого жемчужина несущей волны. Это не дает мне ошибку, но не показывает изображение по умолчанию только сломанное изображение на экране. Однако, если есть допустимая загрузка, она показывает загрузку правильно, поэтому я знаю: большой палец и основные процессы работают. Единственная часть, которая ломается, - default_url, и я понятия не имею, почему. Я использую рельсы 4 кстати. Любые мысли/идеи?

Спасибо!

Мой код в представлении, которое показывает изображение, если оно загружено и сломанный URL по умолчанию является

<div class="img-container"> 
    <%= image_tag @user.image_url(:main).to_s %> 
</div> 
+0

Имеет ли размер значение png? Если это так, то 300x400 – camdixon

ответ

6

Я просто была аналогичная проблема. Попробуйте просто вернуть «default.png» ни с чем другим в методе default_url. Из того, что я могу сказать, Rails или Carrierwave обрабатывают все проблемы с конвейером активов и будут правильно загружать default.png с помощью только имени.

0

Как я вижу, вы используете переменную 'main' внутри метода default_url, но должны version_name. Если вы хотите использовать прямую «главную» версию, напишите следующую asset_path("fallback/" + ["main", "default.png"].compact.join('_')) или просто напишите "fallback/main_default.png".

Также у вас есть неправильные трактов:

  1. по умолчанию изображение загружается в приложение/активов/изображений/запасной вариант/главная/default.png
  2. будет генерировать умолчанию ресурса следующий путь - 'запасной/main_default.png'