默认个人资料图片pic助手

时间:2013-03-03 22:47:52

标签: ruby-on-rails ruby image profile

如果没有在注册时设置一个默认配置文件图片,我就会遇到一个帮助方法。假设我有一个这样的辅助方法:

def blank_image (user)
  base_image = ""
  if @user.image.empty?
    base_image
  else
    @user.image
  end
end

我需要的是指向base_image的网址,以便我知道在哪里保存此图片。我猜测资产/图像,但我不知道如何“拼出”图像位置,如果这是有道理的。以及如何在我的视图中实现这一点。提前谢谢。

1 个答案:

答案 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是一个示例,以防您处理上传图像的不同图像版本。