Как отобразить размер файла при просмотре? [Храм Самоцвет - Рельсы]
У меня есть эти ассоциации, и я использую Shrine Gem для загрузки файла.
class Project < ApplicationRecord
include ImageUploader[:cover_image]
has_many :albums, :dependent => :destroy
accepts_nested_attributes_for :albums,
end
class Album, < ApplicationRecord
belongs_to :project
has_many :photos,
accepts_nested_attributes_for :photos,
end
class Photo < ApplicationRecord
include ImageUploader[:image]
belongs_to :album
end
Контроллер проекта
def show
@project = Project.includes(albums: :photos).find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.js # show.js.erb
format.json { render json: @project }
end
end
Я хочу отобразить проект со всей его связью и деталями (размер файла, имя файла и т. Д.) В представлении Project#show. Я могу отобразить размер изображения обложки Project с помощью @project.cover_image.size, но когда я использую его для photo.image.size, возникает ошибка
<p>
<%= @project.name %>
<%= @project.cover_image.size %> #this return the size 868923
<p>
<% @project.albums.each do |album| %>
<%= album.name %>
<% album.photos.each do |photo| %>
<%= photo.image.size %> # this throws error !undefined method `size' for nil:NilClass
1 ответ
Просто так:
<%= image_tag @photo.image_url(:small) if @photo.image %>