Игнорировать отсутствующие изображения цикла и отображать существующие - Rails 5 Active Storage - PullRequest
0 голосов
/ 31 октября 2018

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

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

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

разве что (product.marketing_image! = Nil?)

разве что! 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

1 Ответ

0 голосов
/ 31 октября 2018

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

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

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

@marketing_images = @products.with_marketing_images

Также см. Область действия Rails для IS NOT NULL и не пустая / пустая?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...