如何在模型中获取图像变体的网址(在控制器/视图外部)?活动存储

ViT*_*al- 3 ruby-on-rails rails-activestorage

我可以使用以下代码在模型中获取url(活动存储)

Rails.application.routes.url_helpers.rails_blob_path(picture_of_car, only_path: true)

但是我需要获取调整后的瓦里安网址

picture_of_car.variant(resize: "300x300").processed

例如此代码

Rails.application.routes.url_helpers.rails_blob_path(picture_of_car.variant(resize: "300x300").processed, only_path: true)

NoMethodError (undefined method `signed_id' for #< ActiveStorage::Variant:0x0000000004ea6498 >):
Run Code Online (Sandbox Code Playgroud)

ViT*_*al- 12

解:

Rails.application.routes.url_helpers.rails_representation_url(picture_of_car.variant(resize: "300x300").processed, only_path: true)

这里提供答案。

对于一个变体,您需要使用rails_representation_url(variant)-这将生成一个与rails_blob_url所构建的URL类似的URL,但专门针对该变体。

  • 您可以删除“.processed”,以便在首次获取图像时延迟执行此操作。您还可以删除“only_path: true”并仅调用“rails_representation_path”而不是“rails_representation_url”。 (3认同)