我有一个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 :(得分: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