如何确保对象始终存在,即使它是空的
How to ensure an object always is there, even if empty
我有一个 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": {
}
}
我怎样才能做到这一点?
因为头像只有在不是 nil
时才被 return 编辑,所以您可以假设如果头像为 nil,则您 return 作为头像的默认对象。
比如在某处添加方法:
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)
我有一个 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": {
}
}
我怎样才能做到这一点?
因为头像只有在不是 nil
时才被 return 编辑,所以您可以假设如果头像为 nil,则您 return 作为头像的默认对象。
比如在某处添加方法:
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)