gpt4 book ai didi

ruby - 如何在 rails Activestorage 中添加默认附件

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:59 27 4
gpt4 key购买 nike

我有一个模型 Post with

has_one_attached :cover

没有附件是必要的。那么,有什么方法可以添加默认附件,即使用户没有提供附件也是如此。

因此,当显示帖子时,我可以显示封面图片。

<% if @post.cover.attached? %>
<%= image_tag(@post.cover, class: 'card-img-top img-fluid') %>
<% else %>
<div class="text-align-center img-place-holder">
No Image Added Please add One
</div>
<% end %>

除了检查是否附加了某些东西并尝试像这样解决它之外,还有其他方法吗?

所以,我可以使用,

<%= image_tag(@post.cover, class: 'card-img-top img-fluid') %>

直接不带任何if条件

谢谢

最佳答案

如果你想在不存在的情况下附加一张默认图片,那么你可以在回调中执行此操作

# 1. Save a default image in Rails.root.join("app", "assets", "images", "default.jpeg")

# 2. In post.rb

after_commit :add_default_cover, on: [:create, :update]


private def add_default_cover
unless cover.attached?
self.cover.attach(io: File.open(Rails.root.join("app", "assets", "images", "default.jpeg")), filename: 'default.jpg' , content_type: "image/jpg")
end
end

# 3. And in your view
<%= image_tag(@post.cover, class: 'card-img-top img-fluid') %>

或者,如果您不想将默认封面附加到帖子但仍想在帖子的显示页面上显示图片

# 1. Save a default image in Rails.root.join("app", "assets", "images", "default.jpeg")

# 2. In post.rb

def cover_attachment_path
cover.attached? ? cover : 'default.jpeg'
end

# 3. And in your view
<%= image_tag(@post.cover_attachment_path, class: 'card-img-top img-fluid') %>

关于ruby - 如何在 rails Activestorage 中添加默认附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50811749/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com