如果没有在注册时设置一个默认配置文件图片,我就会遇到一个帮助方法。假设我有一个这样的辅助方法:
def blank_image (user)
base_image = ""
if @user.image.empty?
base_image
else
@user.image
end
end
我需要的是指向base_image
的网址,以便我知道在哪里保存此图片。我猜测资产/图像,但我不知道如何“拼出”图像位置,如果这是有道理的。以及如何在我的视图中实现这一点。提前谢谢。
答案 0 :(得分:6)
这样的东西?
def blank_image.url(user)
if @user.image.empty?
"/assets/default_photo.jpg"
else
@user.image.url
end
end
资产上的图像,一旦预编译,它们将从/ assets(与样式表和javascripts相同)中获得,“/ images”路径将被删除。
根据您的新评论,最佳解决方案可能是为Carrierwave提供default_url,如果您选中documentation,则可以执行以下操作:
class MyUploader < CarrierWave::Uploader::Base
version :thumb do
process resize_to_fill: [280, 280]
end
version :small_thumb, :from_version => :thumb do
process resize_to_fill: [20, 20]
end
def default_url
"/assets/default_images/" + [version_name, "default.png"].compact.join('_')
end
end
然后在你的/ app / assets / images / default_images /你应该添加照片创建文件 default.png 这是默认图像, thumb_default.png 这是版本:thumb,最后是 small_thumb_default.png ,版本:small_thumb。
注意两者:thumb和:small_thumb是一个示例,以防您处理上传图像的不同图像版本。