加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 03:25:27 所属栏目:百科 来源:网络整理
导读:我有一个模型Post has_one_attached :cover 没有必要附件. 那么,即使用户没有提供默认附件,我是否可以添加任何默认附件. 因此,当显示帖子时,我可以显示封面图像. % if @post.cover.attached? % %= image_tag(@post.cover,class: 'card-img-top img-fluid') %
我有一个模型Post

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","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","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') %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读