默认个人资料图片pic助手

3 ruby profile ruby-on-rails image

如果没有在注册时设置一个默认配置文件图片,我会被困在辅助方法上.假设我有一个像这样的辅助方法:

def blank_image (user)
  base_image = ""
  if @user.image.empty?
    base_image
  else
    @user.image
  end
end
Run Code Online (Sandbox Code Playgroud)

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

ror*_*rra 6

像这样的东西?

def blank_image.url(user)
  if @user.image.empty?
    "/assets/default_photo.jpg"
  else
    @user.image.url
  end
end
Run Code Online (Sandbox Code Playgroud)

资产上的图像一旦被预编译,就可以从/ 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
Run Code Online (Sandbox Code Playgroud)

然后在你的/ app/assets/images/default_images /你应该添加照片创建文件default.png这是默认图像,thumb_default.png是版本:thumb,最后是small_thumb_default.png,它是版本: small_thumb.

注意两者:thumb和:small_thumb是一个示例,以防您处理上传图像的不同图像版本.