Ruby Rails 照片阵列

Ruby on Rails Photo Array

我正在 Ruby Rails 6.0 及更高版本的 Shrine 中工作,并试图将我图像的第一张照片作为我的相册页面的封面图像。我在这里 Rails-Shrine-Example 工作:

https://github.com/erikdahlstrand/shrine-rails-example

我的目标是将上传照片中的第一张照片显示为封面照片,而不是相册 table 中的 cover_photo。这可能吗?

我的专辑封面代码是:

<% @albums.each do |album| %>
  <tr>
    <td scope="row"><%= image_tag album.cover_photo_url(:small), size: "200x200", class: "img-thumbnail" %></td>
    <td scope="row"><%= album.name %></td>
    <td scope="row"><%= link_to "Edit", album, class: "btn btn-default" %> <%= link_to "Show", album, class: "btn btn-default" %></td>
  </tr>
<% end %>

然后在我的相册中,我可以使用

从相册中提取第一张照片
<% @album.photo.each do |photo| %>
   <div class="col-lg-3 col-md-4 col-6">
      <%= image_tag photo.image.derivation_url(:thumbnail, 300, 300).to_s, :class => "img-fluid img-thumbnail" %>
   </div>
<% end %>

所以我试图解释这一切,我的数据库有一个专辑 table 有标题和封面照片,还有另一个 table 的照片。

我如何告诉它 select 每个相册显示该相册照片中的第一张图片 table?

*更新 我能够安装这个脚本并且它在某种程度上起作用,除了每个循环显示我照片中的第一张照片 table 的次数等于上传的照片数量。我知道这是我的循环。

   <% @albums.each do |album| %>
      <tr>
        <td scope="row">
          <% album.photos.each do |photo| %>
            <%= image_tag album.photos.first.image.derivation_url(:thumbnail, 300, 300), :class => "img-fluid img-thumbnail" %>
          <% end %>
      </td>
        <td scope="row"><%= image_tag album.cover_photo_url(:small), size: "200x200", class: "img-thumbnail" %></td>
        <td scope="row"><%= album.name %></td>
        <td scope="row"><%= link_to "Edit", album, class: "btn btn-default" %> <%= link_to "Show", album, class: "btn btn-default" %></td>
      </tr>
    <% end %>

照片模特

    class Photo < ActiveRecord::Base
  include ImageUploader::Attachment(:image)  # ImageUploader will attach and manage `image`
end

专辑模特

    class Album < ApplicationRecord
  has_many :photos, dependent: :destroy
  accepts_nested_attributes_for :photos, allow_destroy: true

  include ImageUploader::Attachment(:cover_photo)  # ImageUploader will attach and manage `cover_photo`

  validates_presence_of :name, :cover_photo  # Normal model validations - optional
end

正如 Lurker 分享的那样,我也从没有附加照片的相册中提取内容。我不确定如何修复字符串。我知道一些 image_tags 使用 if present?或其他东西,但我无法将其添加到其中而没有错误。

好的,我想我明白了。有了照片上的一系列条件,如果存在的话,我不能做一个简单的吗?争论。我需要创建一个 if else 语句。所以这是我发现对我有用的东西。

<% if  album.photos.present? %>
      <%= image_tag album.photos.first.image.derivation_url(:thumbnail, 300, 300).to_s %> 
  <% else %>
     <%= image_tag 'image.jpg' %>
  <% end %>