ruby-on-rails - 你如何在 JBuilder 中渲染散列值的部分?

标签 ruby-on-rails json jbuilder

我有一个类似于以下的树状对象图:

{
  :name => "Grandparent",
  :children => {
    :child_a => {
       :name => "Parent A",
       :children => {
         :grandchild_a_a => {
           :name => "Child A-A",
           :children => {}
         }
         :grandchild_a_b => {
           :name => "Child A-B"
           :children => {}
         }
       }
    }
    :child_b => {
       :name => "Parent B",
       :children => {}
    }
  }
}

我想生成反射(reflect)此结构的 JSON。不知道子嵌套到多深,每层属性都一样。子哈希中的键很重要,必须保留。

我想使用 JBuilder 部分来表示一个级别,然后递归调用它。到目前为止,这是我的模板:
# _level_partial.json.jbuilder
# passing the above object graph as :level
json.name level[:name]
json.children do
  level[:children].each do |key, child|
    # How do I map the following to the given key?
    json.partial! "level_partial", :level => child
  end
end

我可以很容易地通过部分调用为每个 child 生成 JSON,但这会将它直接插入到 JSON 输出中。如何将部分结果映射到特定的哈希/对象键?

最佳答案

我找到了答案。尽管它似乎在很大程度上没有记录,JBuilder.set!可以接受块而不是显式值。该块可以调用部分,然后将其分配给哈希。

json.name level[:name]
json.children do
  level[:children].each do |key, child|
    json.set! key do
      json.partial! "level_partial", :level => child
    end
  end
end

关于ruby-on-rails - 你如何在 JBuilder 中渲染散列值的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660367/

相关文章:

ruby-on-rails - 插入自定义 key :value pair in JSON structure with custom order using jbuilder

ruby-on-rails - Rails 服务器运行,但 Rails 控制台抛出错误 "not checked out yet"

javascript - 通过 moment.js 创建日历数组

php - Amazon Connect 从 Lambda 函数和 PHP 接收 JSON 数据

c# 如何在我的类中添加属性而不必更改原始类

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

uml - 有人用 OCL 来使用 UML 吗?程序员使用它还是只有不编码的分析师才使用它?

ruby-on-rails - Heroku 是否保护个别网站免受 DoS/DDoS 攻击?

html - Rails 将 div 添加到通过验证的表单字段,例如失败时的 "fields_with_errors"div

ruby-on-rails - 如何在 Rails 中使用一种表单创建另一个模型时更新模型