2014-10-05 59 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.png軌道4 - CarrierWave DEFAULT_URL不能與資產圖像工作

這DEFAULT_URL是繼所描述的標準資產管道載波寶石。它不會給我一個錯誤,但顯示沒有默認圖像只有視圖上的一個破碎的圖像圖標。但是,如果有有效的上傳,它會正確顯示上傳,所以我知道:thumb和主要進程正在工作。唯一違規的部分是default_url,我不知道爲什麼。我使用軌道4 btw。任何想法/想法?

謝謝!

我的視圖代碼,顯示圖像,如果它被上傳並破碎默認網址是

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

請問png的大小問題?如果是這樣,它是300x400 – camdixon 2014-10-05 14:03:33

回答

6

我剛做了一個類似的問題。嘗試在default_url方法中簡單地返回「default.png」。據我所知,Rails或Carrierwave本身會處理所有的資產管道問題,並會正確加載default.png,只是名稱正確。

0

正如我所看到的,您正在使用default_url方法中的'main'變量,但應該使用version_name。如果你想直接使用'主'版本,你應該寫下asset_path("fallback/" + ["main", "default.png"].compact.join('_'))或只寫"fallback/main_default.png"

你也有錯pathes:

  1. 默認圖像上傳到應用程序/資產/圖像/後退/主/爲Default.png
  2. DEFAULT_URL會產生一個路徑 - '回退/ main_default.png'