如果没有用户图像,我想用ruby写一个条件来显示默认图像,如果现在显示当前图像的话。
这是我的index.html.slim页面:
@product.reviews.each do |r|
a href="#"
= image_tag r.user.image_url :thumbnail`
发布于 2015-08-14 05:35:50
我建议您在助手或模型中添加代码,以保持代码的干净。
辅助方法:
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
查看页面:
@product.reviews.each do |r|
a href="#"
= user_avatar r.user
另外,从代码中我感觉你在使用像回形针或载波这样的库。
如果是,在回形针中,您可以通过将此代码放置在模型中来设置默认图像。
:default_url => "/assets/:style/missing_avatar.jpg"
如果您正在使用载波,请将此方法放置在上载程序文件中。
def default_url
"/images/fallback/default.png"
end
发布于 2015-08-14 05:28:17
假设使用回形针或其他东西将图像保存到数据库中,则可以通过以下方式检查图像是否存在
if r.user.image.present?
= image_tag r.user.image_url :thumbnail
else
= image_tag 'your default image path'
end
您应该检查您的图像宝石,以了解这是否有效,因为我不知道您有什么样的设置。
发布于 2020-08-19 05:25:28
我通过在用于显示用户的视图中使用erb来处理这个问题。
这种方法的一个好处是,您不需要多次保存多个用户的默认照片。您可以将其保存在资产/图像中,只需依赖它即可。
我使用Active Storage和以下宝石来处理照片的上传和大小调整:
gem 'image_processing', '1.9.3'
gem 'mini_magick', '4.9.5'
gem 'active_storage_validations', '0.8.9'
并在必要的视图中编写了以下代码:
<% 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的照片
https://stackoverflow.com/questions/32002736
复制相似问题