2014-12-02 65 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]

參見本