我尝试做一些从资产中获取头像的方法。我的User.rb代码:
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", photo file size: 121649, photo updated at: "2013 08 20 07:51:42", user id: 109, active: false, avatar: true>]" src="/images/[#<Asset id: 176, created_at: "2013-08-20 07:51:43", updated_at: "2013-08-20 07:51:43", photo_file_name: "user_2.jpg", photo_content_type: "image/jpeg", photo_file_size: 121649, photo_updated_at: "2013-08-20 07:51:42", user_id: 109, active: false, avatar: true>]">
它不需要photo.url(大小)而是整数组索引。
当我这样做时:
Rails.logger.fatal "check_me #{asset.photo.url(size)}"
它只返回照片网址。但它仍然不起作用。
当我这样做时:
self.assets.first.photo.url(size)
它有效。有什么区别?
答案 0 :(得分:0)
在get_avatar
函数中循环assets数组,当你获得资源的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
希望它有所帮助。