如何确保对象始终存在,即使它是空的

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)