3

如果在注册时未设置默认个人资料图片,我会被困在一种辅助方法上。假设我有一个这样的辅助方法:

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

我需要的是指向的网址,base_image所以我知道在哪里保存这张图片。我在猜测资产/图像,但如果有意义的话,我不知道如何“拼出”图像位置。以及如何在我看来实现这一点。提前致谢。

4

1 回答 1

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,如果您查看文档,您可以执行以下操作:

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这是版本:小拇指。

请注意 :thumb 和 :small_thumb 都是一个示例,以防您为上传的图像处理不同的图像版本。

于 2013-03-03T23:10:27.143 回答