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

时间:2015-11-11 09:59:54

标签: ruby-on-rails jbuilder

我有一个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": {
  }
}

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

因为只有当头像不是$youtubeApiKey = 'YOUR_KEY'; function checkVideoWorking($videoID) { global $youtubeApiKey; $url = sprintf("https://www.googleapis.com/youtube/v3/videos?part=id&id=%s&key=%s", $videoID, $youtubeApiKey); $response = file_get_contents($url); $working = true; $decoded = json_decode($response, true); if ($decoded['pageInfo'] && $decoded['pageInfo']['totalResults'] == 0) { $working = false; } return $working; } 时才会返回,所以你可以假设如果头像为零,则返回头像的默认对象。 例如,添加somewhere方法:

nil

其中def avatar_for(user) return user.avatar if user.avatar.present? default_avatar end 是一个在调用

时呈现的对象
default_avatar