2015-11-11 14 views
0

我有一个有条件呈现部分的jbuilder模板。如何确保一个对象始终存在,即使是空的

json.current_user do 
    # ... 
    json.avatar_urls do 
    json.partial! 'api/users/avatar_urls', avatar: user.avatar if user.avatar 
    end 
end 

当存在化身,所得到的JSON样子(简化):

"current_user": { 
    "avatar_urls": { 
    "original": "http://example.com/avatars/example.jpg", 
    } 
} 

但是,当不存在化身,所得到的JSON没有 “avatar_urls” 对象在所有:

"current_user": { 
} 

我想它总是有这样的对象,但我希望它是一个空 对象:

"current_user": { 
    "avatar_urls": { 
    } 
} 

我该如何做到这一点?

回答

0

因为头像只有当它不是nil时才会返回,所以您可以假设如果头像为零,则返回头像的默认对象。 例如,添加某处方法:

def avatar_for(user) 
    return user.avatar if user.avatar.present? 
    default_avatar 
end 

其中default_avatar是当调用将被呈现的对象

json.partial! 'api/users/avatar_urls', avatar: avatar_for(user) 
相关问题