Если пользовательская фотография отсутствует, отобразите общее изображение - PullRequest
0 голосов
/ 29 февраля 2012

В моем приложении у меня есть возможность для пользователя загрузить изображение для изображения профиля через скрепку.

Хочу, чтобы я хотел сделать на странице index.html.erb, чтобы отобразить всех пользователей с ихотображать изображения, и если они не загрузили одно, то должно отображаться изображение по умолчанию.

Сейчас я попытался закодировать его, но на данный момент у пользователей, у которых есть изображения, отображается, но у тех, кто не получаетНичего.

У меня есть следующий код в моей модели пользователя:

def user_photo
  (photo.url.present?) ? photo.url : '/images/guest.png'
end

и следующий код в моем index.html.erb

<% for user in @users %>
 .............
  <%= image_tag user.user_photo, :height => 50, :width => 50 %>
 ..............
 <% end %>

Любые идеи пов чем может быть моя проблема?

Спасибо

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Поскольку это логика представления, я бы поместил ее в помощник, а не в модель.Итак, в соответствующем помощнике:

def user_photo(user)
  user.photo.url.present? ? image_tag user.user_photo : image_tag 'guest.png'
end

Затем вызовите этого помощника из представления.Конечно, вы можете добавить другие параметры в image_tag для размеров и так далее.Таким образом, вы получаете преимущество от последовательного использования помощников image_tag.

0 голосов
/ 29 февраля 2012

В вашей пользовательской модели есть что-то подобное:

has_attached_file :photo, 
    :default_url => '/images/guest.jpeg',
    :styles => { 
      :large => "300x300>",
      :thumb => "100x100>",
      :tiny  => "32x32>"
    }

Опция: default_url используется, если для модели нет прикрепленного файла.Если у пользователя нет загруженной фотографии, вы можете использовать эту опцию, чтобы настроить отображение фотографии по умолчанию.

В представлении:

<%= image_tag @user.photo.url(:thumb) %>

Читать Руководство по использованию скрепки

...