Не могу понять, как настроить изображение профиля по умолчанию для скрепки

Я читал прошлые сообщения стека по этой проблеме, но мне все еще не удалось получить изображения профиля по умолчанию для работы.

В папке app / models у меня есть файл «profile.rb » это выглядит так:

class Profile < ActiveRecord::Base
  belongs_to :user

  # From Paperclip GitHub README
  has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.jpg"
  validates_attachment_content_type :avatar, content_type: /Aimage/.*Z/
end

Из того, что я понимаю, это в основном говорит, что стили-это своего рода заполнитель для среднего и большого пальца. Таким образом,» большой палец «и» средний » должны быть папками внутри активов/изображений. Default_url указывает, что изображение по умолчанию будет найдено в: styles, который находится в папке «thumb» или «medium». Я сделал папку под названием » thumb «В моем каталоге изображений, а затем поместил» missing.jpg » файл в нем. В моем шоу.формат html.erb у меня есть линия

<%= image_tag @user.profile.avatar.url %>

который работает при отображении изображения, когда пользователь загрузил изображение, но отображается как «отсутствует», если они не загружают изображение.

Я также заметил, что на публике / профили / аватары/000/000/004 каталог, в котором было 3 папки под названием «medium», «original» и «thumb.»Я предполагал, что именно здесь мне нужно разместить мои «пропавшие без вести».jpg,» но это не сработало, поэтому я немного смущен относительно того, что делать.

Согласно этому сообщению стека, Скрепка ищет изображения в публичном каталоге, поэтому я предполагаю, что это правильное место, но я все еще не понимаю, почему это не будет работать.

1 ответ

  1. отсутствующее изображение должно быть в общей папке или вы можете сохранить его в папке app/assets/images, Так как оно должно быть доступно глобально, и если в будущем вы удалите таблицу аватаров, отсутствующее изображение исчезнет.

    после сохранения отсутствующего изображения в папке изображений.

    либо вы можете дать default_url как:

    default_url: "/assets/icon/missing.jpg"
    

    или вы можете поместить условие в свои представления,

    <% if @user.avatar? %>
        <%= image_tag @user.profile.avatar.url(:medium)  %>    
    <% else %>
        <%= image_tag "/assets/icon/missing.jpg" %>
    <% end %>