我有一个菜单模型,它有相同类型的子菜单。就像是:
- 1级
- 1.1级
- 1.2级
- 2级
- 2.1级
- ...
因此,我需要一种以递归方式将所有级别包含在我的 json 中的方法。
我有一个菜单模型,它有相同类型的子菜单。就像是:
因此,我需要一种以递归方式将所有级别包含在我的 json 中的方法。
Rails 中的 JSON 通过两种方法工作:
as_json
负责创建对象的哈希表示,同时to_json
将该哈希对象表示转换为 JSON。
所以你需要做的是在你的模型中定义 as_json 方法来包含你想要的。
def as_json
{
:other_options => value,
:submenu => self.submenus.collect { |n| n.as_json }
}
end
这是一个非常粗略的实现,但它会递归地访问所有子菜单(因为子菜单本身就是菜单)并将它们呈现为一个哈希,然后再转换为 JSON。