忽略缺少的循环图像并显示当前图像-Rails 5 Active Storage

时间:2018-10-31 12:56:23

标签: ruby-on-rails-5

我有一个旋转木马,它从附加的has_one(marketing_image)Active Storage文件上传方法拍摄图像。如果未上传营销图片,我希望轮播仍然显示。

很明显,轮播必须要有至少一个,但我想找到一种方法来跳过阵列中所有丢失的图像并仅显示已上传的图像。我正在使用Rails5。谢谢

我尝试了以下方法,但是它们隐藏了整个轮播,这不是我想要的。

除非(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 :(得分:0)

我认为您正在寻找从选定产品中找到任何营销形象的方法?您可以创建一个范围来查找非空白的关联图像:

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

那么您的轮播可以是:

@marketing_images = @products.with_marketing_images

另请参见Rails scope for IS NOT NULL and is not empty/blank?