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 %>
我正在 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 %>