如何在 jbuilder 中将一个部分渲染两次?
Posted
技术标签:
【中文标题】如何在 jbuilder 中将一个部分渲染两次?【英文标题】:How can I render one partial twice in jbuilder? 【发布时间】:2015-01-30 10:33:30 【问题描述】:我想像这样渲染一个 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
【问题讨论】:
【参考方案1】:将一个局部渲染两次似乎很浪费,我可以这样渲染吗?
如果您关心的是最小化代码,那么可以,您可以使用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
但是,有时缓存可能会更慢。因此,请记住它是否符合以下条件:
Partial 包含大量计算,这些计算平均比访问缓存更昂贵。例如 WEB API 调用或 AR 查询
生成的 JSON blob 的大小很小
查看更多信息 [Jbuilder Rails caching is slower]
【讨论】:
以上是关于如何在 jbuilder 中将一个部分渲染两次?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Rails 找不到我的 jbuilder 模板或不渲染它?