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
我将我的默认图片上传到app / assets / images / fallback / main / default.png
此default_url遵循载波gem所描述的标准资产管道。它不会给我一个错误,但在视图上只显示一个损坏的图像图标。但是,如果有一个有效的上传,它会正确显示上传,所以我知道:thumb,以及:主要进程正在运行。破坏的唯一部分是default_url,我不明白为什么。我正在使用rails 4顺便说一句。有什么想法/想法吗?
谢谢!
我在视图中的代码显示图像是否已上传,且默认网址是否为
<div class="img-container">
<%= image_tag @user.image_url(:main).to_s %>
</div>
答案 0 :(得分:6)
我刚才有类似的问题。尝试简单地返回&#34; default.png&#34;在default_url方法中没有其他内容。据我所知,Rails或Carrierwave本身处理所有资产管道问题,并且只使用名称正确加载default.png。
答案 1 :(得分:0)
我可以看到你在default_url
方法中使用'main'变量,但应该version_name
。如果你想直接使用'main'版本,你应该写下asset_path("fallback/" + ["main", "default.png"].compact.join('_'))
或者只写"fallback/main_default.png"
。
你也错了: