Как я могу получить URL варианта изображения в модели (вне контроллера / просмотра)?Активное хранилище - PullRequest
0 голосов
/ 29 ноября 2018

Я могу получить URL в модели с этим кодом (Active Storage)

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)

throw

NoMethodError (undefined method `signed_id' for #< ActiveStorage::Variant:0x0000000004ea6498 >):

Ответы [ 2 ]

0 голосов
/ 19 июля 2019
variant = picture_of_car
            .variant(resize: '300x300')
            .processed 

variant.service.send(:path_for, variant.key) # Absolute path to variant file
0 голосов
/ 30 ноября 2018

Решение:

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

Ответ предоставлен здесь .

для варианта, который необходимо использовать rails_representation_url (вариант) - это создаст URL-адрес, аналогичный тому, который создает rails_blob_url, но специально для этого варианта.

...