【问题标题】:default profile picture pic helper默认个人资料图片图片助手
【发布时间】:2013-02-17 23:15:24
【问题描述】:

如果在注册时未设置默认个人资料图片,我会坚持使用辅助方法来呈现默认个人资料图片。假设我有一个这样的辅助方法:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby image profile


    【解决方案1】:

    这样的?

    def blank_image.url(user)
      if @user.image.empty?
        "/assets/default_photo.jpg"
      else
        @user.image.url
      end
    end
    

    assets 上的图片,一旦被预编译,就可以从 /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 都是一个示例,以防您为上传的图像处理不同的图像版本。

    【讨论】:

    • 如果这有帮助,我将不胜感激您选择我的答案作为接受并投赞成票,这会提高我的声誉。谢谢
    • 试过了,但图像总是坏掉:-(我正在使用carrierwave上传btw。
    • 好的,所以你的想法是如果用户不提交图像,则通过carrierwave上传默认图像......我放了一些代码以便在用户的视图上显示默认图像没有提交图像,这更有意义,因为您可以稍后将carrierwave更改为回形针,或者您可能想要更改用户的默认图片并且如果您将默认图片与用户相关联,那么它不会是以后很容易做这样的改变。
    • 您好,只是为了澄清这个默认图像进入 app/assets 目录而不是 public/assets 目录。?每当我将图像放在这些目录中的任何一个中时,它总是会找到一种方法或删除自己:-S 我只是不明白。有什么想法吗?
    • 它进入 /app/assets/images/default_images/... 你不应该删除这些文件,carrierwave 实际上没有办法删除你资产中的文件。
    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多