Как отобразить размер файла при просмотре? [Храм Самоцвет - Рельсы]

У меня есть эти ассоциации, и я использую 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 %>
Другие вопросы по тегам