Игнорировать отсутствующие изображения цикла и отображать существующие - rails 5 active storage

У меня есть карусель, снимающая изображения с помощью метода загрузки файла активного хранилища has_one (marketing_image). Я бы хотел, чтобы карусель продолжала отображаться, если рекламное изображение не загружено.

Очевидно, мне понадобится хотя бы один для работы карусели, но я хотел бы найти способ пропустить любые отсутствующие изображения в массиве и отображать только те, которые были загружены. Я использую Rails 5. Спасибо

Я пробовал следующее, но они скрывают всю карусель, чего я не хочу.

если (product.marketing_image! = ноль?)

разве что! product.marketing_image.blank?

Модель

has_one_attached :product_image
has_one_attached :marketing_image

Показать

 <%= image_tag product.marketing_image.variant(combine_options: {resize: '1000x450^', gravity: 'center', extent: '1000x450^'}), class: 'img-fluid'%>

Контроллер

def index
  @products = Product.all
  @categories = Category.all
end
0
0
60
1

Ответы 1

Я думаю, вы хотите найти какие-либо маркетинговые изображения выбранных продуктов? Вы можете создать область для поиска связанных изображений, которые не являются пустыми:

scope :with_marketing_images, -> { joins(:marketing_image).where.not(marketing_image.url: '') }

Тогда ваша карусель может быть:

@marketing_images = @products.with_marketing_images

Также см. Область видимости Rails НЕ ПУСТО и не пуста?

Другие вопросы по теме