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

参见本