ActiveStorage - 仅 Rails API

问题描述 投票:0回答:1

我有一个仅限 Rails-API 的应用程序,想要上传徽标。

使用 Rails 7、Ruby 3.1.2

宝石“图像处理”,“〜> 1.2”

可以通过以下方式上传Logo并检索原始Logo。

class CloudOperator < ApplicationRecord

  has_one_attached :op_logo do |attachable|
    attachable.variant :thumb, resize_to_limit: [100, 100]
  end

  def op_logo_url
    Rails.application.routes.url_helpers.url_for(op_logo) if op_logo.attached?
  end
end

终端中的以下命令提供网址

CloudOperator.last.op_logo_url

"http://localhost:3001/rails/active_storage/blobs/redirect/eyJfcmFpbiOnsibWVzc2FnZSI6IkJBaHBDdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--d38ae8737261881a9cf099fdb2de584a367641/2chDe_kw.jpg"

如何获取thumb变体URL?

使用载波很简单,但不想安装额外的宝石。

ruby-on-rails rails-activestorage ruby-on-rails-7
1个回答
0
投票

要使用 Active Storage(包含在 Rails 中)检索徽标的缩略图变体的 URL,您可以使用rails_representation_url 帮助程序而不是 url_for 生成变体 URL。

class CloudOperator < ApplicationRecord
  has_one_attached :op_logo do |attachable|
    attachable.variant :thumb, resize_to_limit: [100, 100]
  end

  def op_logo_url
    Rails.application.routes.url_helpers.url_for(op_logo) if op_logo.attached?
  end

  def op_logo_thumb_url
    if op_logo.attached?
      Rails.application.routes.url_helpers.rails_representation_url(
        op_logo.variant(:thumb).processed,
        only_path: true
      )
    end
  end
end

© www.soinside.com 2019 - 2024. All rights reserved.