2014-12-02 3 views
11

Я хочу сделать шаблон JBuilder так:Как сделать один частичный дважды в jbuilder?

json.author do 
    json.partial! 'user', user: @user 
end 
json.owner do 
    json.partial! 'user', user: @user 
end 

Это кажется пустой тратой, чтобы сделать один частичный два раза, я могу вынести, как это?

user_json = json.some_render_partial! 'user', user: @user 
json.author { user_json } 
json.owner { user_json } 

ответ

5

кажется пустой тратой, чтобы сделать один частичный два раза, я могу вынести, как это?

Если ваша проблема заключается в том, чтобы свести к минимуму код, то да, вы можете использовать proc s.

user_json = proc { json.partial! 'user', user: @user } 

json.author &user_json 
json.owner &user_json 

Кроме того, если ваша забота, чтобы повысить производительность, то один из способов заключается в кэш частично. Попробуйте это

user_json = proc { 
    json.cache! @user, expires_in: 10.minutes do 
    json.partial! 'user', user: @user 
    end 
} 

json.author &user_json 
json.owner &user_json 

Но иногда кеширование может быть медленнее. Итак, имейте в виду, если она отвечает следующим критериям:

  • Частичное охватывает здоровенный вычисление, которое в среднем дороже, чем доступ к кэш-памяти. как WEB API вызовы или AR запросов

  • Размер сгустка JSON производится небольшой

Смотреть это для получения дополнительной информации [Jbuilder Rails caching is slower]