【问题标题】:How can I render one partial twice in jbuilder?如何在 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 }

【问题讨论】:

    标签: ruby-on-rails jbuilder


    【解决方案1】:

    将一个局部渲染两次似乎很浪费,我可以这样渲染吗?

    如果您关心的是最小化代码,那么可以,您可以使用procs。

    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]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-18
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 2016-03-24
      • 1970-01-01
      相关资源
      最近更新 更多