ruby-on-rails - 如何在 jbuilder 中渲染一个部分两次?

标签 ruby-on-rails 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 }

最佳答案

It seems a waste to render one partial twice, can I render like this?



如果您关心的是最小化代码,那么可以,您可以使用 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 blob 的大小很小

  • 有关更多信息,请参阅此信息 [ Jbuilder Rails caching is slower ]

    关于ruby-on-rails - 如何在 jbuilder 中渲染一个部分两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27245020/

    相关文章:

    ruby-on-rails - 未定义方法 ‘where’ RoR 错误

    ruby-on-rails - 从私有(private) NIC 访问时,Rails 显示 IP 为 127.0.0.1,但 Nginx 显示正确的 IP。公共(public) IP 可以正常转发

    ruby-on-rails - 如何更有效地聚合这些数据?

    ruby-on-rails - lovdbyless VS 社区引擎……哪个最好?

    ruby-on-rails - 如何从 JBuilder View 委托(delegate)给模型的 to_builder 方法?

    ruby-on-rails - 为什么使用 Ruby 而不是 Smalltalk?

    ruby-on-rails - Rails jbuilder 缓存+查询

    ruby-on-rails - rails : Render Json Status Problems

    ruby-on-rails - Rails json/jbuilder - 根据类别对 json View 进行分组

    elasticsearch - 使用match_phrase组合过滤器-Elastic 1.7