我有一个仅限 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?
使用载波很简单,但不想安装额外的宝石。
要使用 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