2011-12-28 6 views
0

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

Я попытался это, но он показывает undefined method 'image?' for #<WillPaginate::Collection:0x007f93a1e0e638>

- if @images.image? 
     - @images.each do |image| 
      = image_tag ("devices/#{image.device}.png"), :class => "img_#{image.device}" 
      - if image.image? 
       = link_to image_tag(image.image_url(:small), :class => "explore_#{image.device}"), image 
      - else 
       = image_tag '123-small.jpg', :class => "explore_#{image.device}" 
    - else 
     %p Looks like you don't have any images uploaded! 

Edit: images_controller.rb

def index 
    @title = "My Images" 
    @images = current_user.images.paginate(:page => params[:page]) 
end 
+0

Возможный дубликат [Как проверить, существует ли изображение в Rails?] (Http://stackoverflow.com/questions/7969241/how-to-check-if-image-exists-in-rails) –

+0

показать нам соответствующие код контроллера –

+0

Амир, это не дубликат, так как он отличается. –

ответ

3

Похоже, вы пытаетесь проверить, есть ли какие-либо изображения в @images и просто используя для этого неправильный метод. Вместо этого попробуйте:

- if @images.present? 
+0

Блестящий. Я пытался использовать '.exists? '. Благодаря :) –

0

В соответствии с вашим кодом, @images, очевидно, в WillPaginate::Collection из image, который действует как массив.

Поэтому, чтобы проверить, является ли @images является не пустой, вы должны использовать if @images.present? или unless @images.empty? вместо этого.