web-dev-qa-db-ja.com

モデル内(コントローラー/ビューの外部)の画像バリアントのURLを取得するにはどうすればよいですか?アクティブストレージ

このコードでモデルのURLを取得できます(アクティブストレージ)

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

しかし、サイズ変更されたバリアンのURLを取得する必要があります

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 >):
5
ViT-Vetal-

解決:

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がビルドされますが、特にそのバリアント用です。

3
ViT-Vetal-
variant = picture_of_car
            .variant(resize: '300x300')
            .processed 

variant.service.send(:path_for, variant.key) # Absolute path to variant file
0
hazg