首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果图像不存在,则显示默认用户图像(rails上的红宝石)

如果图像不存在,则显示默认用户图像(rails上的红宝石)
EN

Stack Overflow用户
提问于 2015-08-14 05:16:08
回答 3查看 6.5K关注 0票数 3

如果没有用户图像,我想用ruby写一个条件来显示默认图像,如果现在显示当前图像的话。

这是我的index.html.slim页面:

代码语言:javascript
运行
复制
@product.reviews.each do |r|
  a href="#"
  = image_tag r.user.image_url :thumbnail`
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-14 05:35:50

我建议您在助手或模型中添加代码,以保持代码的干净。

辅助方法:

代码语言:javascript
运行
复制
def user_avatar user
  if user.image.present?
    image_tag user.image_url :thumbnail
  else
    # Assuming you have a default.jpg in your assets folder
    image_tag 'default.jpg'
  end
end

查看页面:

代码语言:javascript
运行
复制
@product.reviews.each do |r|
  a href="#"
    = user_avatar r.user

另外,从代码中我感觉你在使用像回形针或载波这样的库。

如果是,在回形针中,您可以通过将此代码放置在模型中来设置默认图像。

代码语言:javascript
运行
复制
:default_url => "/assets/:style/missing_avatar.jpg"

如果您正在使用载波,请将此方法放置在上载程序文件中。

代码语言:javascript
运行
复制
def default_url
  "/images/fallback/default.png"
end
票数 3
EN

Stack Overflow用户

发布于 2015-08-14 05:28:17

假设使用回形针或其他东西将图像保存到数据库中,则可以通过以下方式检查图像是否存在

代码语言:javascript
运行
复制
if r.user.image.present?
   = image_tag r.user.image_url :thumbnail
else
   = image_tag 'your default image path'
end

您应该检查您的图像宝石,以了解这是否有效,因为我不知道您有什么样的设置。

票数 1
EN

Stack Overflow用户

发布于 2020-08-19 05:25:28

我通过在用于显示用户的视图中使用erb来处理这个问题。

这种方法的一个好处是,您不需要多次保存多个用户的默认照片。您可以将其保存在资产/图像中,只需依赖它即可。

我使用Active Storage和以下宝石来处理照片的上传和大小调整:

代码语言:javascript
运行
复制
gem 'image_processing',           '1.9.3'
gem 'mini_magick',                '4.9.5'
gem 'active_storage_validations', '0.8.9'

并在必要的视图中编写了以下代码:

代码语言:javascript
运行
复制
  <% if user.image.attached? %>
   <%= image_tag user.image.variant(resize_to_limit: [200, 200]) %>
  <% else %>
    <%= image_tag("default.jpg", alt: "A stern frog", width: "200") %>
  <% end %>

只需确保在资产/图像中有一张名为default.jpg的照片

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32002736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档