2014-09-25 2 views
2

У меня есть модель - Post - у вас могут быть изображения & файлы, загруженные в них. Два разных пользователя в Carrierwave.Как проверить, есть ли у модели фотография с Carrierwave?

Что я хочу сделать, выполните простую проверку наличия фотографии на объекте, и если она обнаружена, я покажу тег изображения. Но если это не так, то это ничего не показывает.

Я попытался это:

<% if post.photo %> 
    <%= image_tag post.photo, size: "52", :class => 'entry-avatar' %> 
<% end %> 

Но это не работает, он всегда показывает это:

<img class="entry-avatar" height="52" src width="52"> 

Когда это не пустой, он добавляет путь к файлу, правильно, чтобы атрибут src.

Если я пытаюсь проверить photo.nil? он не работает, даже если кажется, что он должен:

> a 
=> #<Post id: 1, title: "Fire at Bible College in Christian", photo: nil, body: "A massive fire is now raging at the Bible College ...", created_at: "2014-08-28 08:06:19", updated_at: "2014-09-18 23:35:04", user_id: 1, ancestry: nil, file: nil, status: nil, slug: "fire-at-bible-college-in-christian", publication_status: 1, has_eyewitness: true> 

Обратите внимание, что атрибут :photo выше устанавливается в nil ... но когда я это делаю :

> a.photo 
=> #<PhotoUploader:0x00000102e19878 @model=#<Post id: 1, title: "Fire at Bible College in Christian", photo: nil, body: "A massive fire is now raging at the Bible College ...", created_at: "2014-08-28 08:06:19", updated_at: "2014-09-18 23:35:04", user_id: 1, ancestry: nil, file: nil, status: nil, slug: "fire-at-bible-college-in-christian", publication_status: 1, has_eyewitness: true>, @mounted_as=:photo> 
> a.photo.nil? 
=> false 

Не работает.

Есть ли метод Carrierwave, который я могу использовать для этого или каким-либо другим способом?

+1

Как только проверьте это и посмотрите, что выводит: 'a.photo?' – anusha

ответ

3

Не нужно проверять photo с помощью метода nil?. Вы можете прямо проверить, как a.photo? возвращает логическое значение, основанное на том, присутствует ли файл или нет.

Смежные вопросы