【发布时间】:2016-11-06 18:39:55
【问题描述】:
所以在我的 rails 应用程序中有列表。每个列表都有_一个项目。每个项目有_many 个项目。所以一个项目可以属于另一个项目。我想将这些资源呈现为 JSON,其中每个项目都有其嵌套在其下的子项目。由于每个项目都可能有自己的子项目,因此我不能只继续使用 include: 选项,因为我不知道最后一个项目何时没有子项目。
所以看起来我在呈现 JSON 时必须以某种方式使用递归,所以如果一个 Item 有子项,它的子项嵌套在它下面,如果这些子项中的任何一个有子项,则它们的子项嵌套在它们下面。
我不确定如何使用 to_json 和 include 选项来执行此操作。如果我只是渲染列表的第一个子项,我会这样做:
respond_to do |format|
format.json { render json: @list.to_json(include: :item) }
end
但我不知道如何递归渲染 :item 的子项及其子项,等等。
另一个答案建议使用视图对象或像 RABL 这样的 gem 来解决对于 to_json 来说似乎太复杂的不同问题。对于 to_json 方法,我想要做的事情是否过于复杂?将子资源递归呈现为 json 的最佳选择是什么?
感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails ruby