ruby-on-rails - 如何一次返回2个json对象?

标签 ruby-on-rails ruby-on-rails-3 json rest

我有一个 Controller 返回一个 json 结构,如下所示:

def show
  # .......
  o_json = deep_object_1_to_json(o)
  render :json => o_json
end

private
def deep_object_1_to_json(o)
  o.to_json(
    :include => {....})
end

现在我需要扩展它以返回 2 个对象。然而,显而易见的解决方案给我带来了问题:
def show
  # .......
  o1_json = deep_object_1_to_json(o)
  o2_json = deep_object_2_to_json(o)
  render :json => 
  {
         :object_1 => o1_json,
         :object_2 => o2_json
  }
end

这将返回一个带有 2 个转义 json 数据字符串的 json 对象!

deep_object_2_to_json 函数已经有多层嵌套包含,所以我宁愿不必将它们重构为单个函数。有没有办法让它很容易扩展以在将来添加更多对象而不会出现上面的双重转义问题?

感谢您的指点。

最佳答案

听起来您应该在此基础上构建 to_json可以轻松调用。

事件记录对象的明显候选者是 as_json .这可以完成 to_json 的所有操作确实(包括 :include 选项等等)除了实际将对象转换为 json。相反,您会返回一个 ruby​​ 哈希,您可以根据需要对其进行操作,然后调用 to_json。例如你可以做

render :json => {
  :o1 => object1.as_json(:include => :blah),
  :o2 => object2.as_json(:include => :blah)
}

关于ruby-on-rails - 如何一次返回2个json对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11211166/

相关文章:

ruby-on-rails - 提高此服务器代码的性能以查找域?

javascript - 如何在本地javascript中运行jsonPath?

ruby-on-rails - mongoid 中的货币表示

javascript - 列表上的倒计时器为每个列表项提供相同的计时器结果

ruby-on-rails - rails : When to use many to many assocations?

ruby-on-rails - rails 测试 : assert render action

ruby-on-rails - 跳到Ruby的下一个记录

ruby-on-rails-3 - CanCan不能授权嵌套资源

javascript - 迭代 JSON 对象

javascript - getJSON 值每个