2013-08-20 4 views
0

Я пытаюсь сделать метод, который получает аватар из активов. Мой User.rb код:Rails индекс массива результатов скрепки

def get_avatar(size) 

if self.assets.length != 0 
    self.assets.each do |asset| 
    if asset.avatar 
    asset.photo.url(size) 
    end 
    end 
else 
    default_avatar(size) 
end 

конец

в виду:

user.get_avatar(:small) 

Он должен работать, но с точки зрения я только это:

<img alt="Jpeg&quot;, photo file size: 121649, photo updated at: &quot;2013 08 20 07:51:42&quot;, user id: 109, active: false, avatar: true&gt;]" src="/images/[#&lt;Asset id: 176, created_at: &quot;2013-08-20 07:51:43&quot;, updated_at: &quot;2013-08-20 07:51:43&quot;, photo_file_name: &quot;user_2.jpg&quot;, photo_content_type: &quot;image/jpeg&quot;, photo_file_size: 121649, photo_updated_at: &quot;2013-08-20 07:51:42&quot;, user_id: 109, active: false, avatar: true&gt;]"> 

Это не возьмите файл photo.url (size), но весь массив.

Когда я делаю:

Rails.logger.fatal "check_me #{asset.photo.url(size)}" 

Он возвращает только URL фотографии. Но все равно это не сработает.

Когда я делаю:

self.assets.first.photo.url(size) 

это работает. В чем разница?

+0

Что вы делаете? Что само по себе относится и какие активы? Отправьте модель, в которой есть вложения. Только тогда мы сможем понять, что вы пытаетесь сделать? –

+0

его очень просто - если его User.rb soo относится к модели пользователя. – Wordica

+0

Хорошо. Таким образом, модель User.rb. Пожалуйста, разместите его здесь. –

ответ

0

В вашей функции get_avatar вы зацикливаете массив активов, когда вы получаете URL-адрес актива, вы его не возвращаете, поэтому функция возвращает массив. поэтому добавьте возврат, когда вы получите URL-адрес.

def get_avatar(size) 

    if self.assets.length != 0 
    self.assets.each do |asset| 
     if asset.avatar 
     return asset.photo.url(size) 
     end 
    end 
    else 
    default_avatar(size) 
    end 
end 

Надеюсь, это поможет.

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