2

同じタイプのサブメニューを持つメニューモデルがありました。何かのようなもの:

  • レベル1
    • レベル1.1
    • レベル1.2
  • レベル2
    • レベル 2.1
    • ...

したがって、json にすべてのレベルを再帰的に含める方法が必要です。

4

1 に答える 1

8

RailsのJSONは、次の2つの方法で機能します。

as_jsonオブジェクトのハッシュ表現を作成する責任がありますが、to_jsonそのハッシュオブジェクト表現をJSONに変換します。

したがって、必要なことは、モデルにas_jsonメソッドを定義して、必要なものを含めることです。

def as_json
 {
   :other_options => value,
   :submenu => self.submenus.collect { |n| n.as_json }
 }
end

これは非常に大雑把な実装ですが、すべてのサブメニューに再帰的にアクセスし(サブメニュー自体がメニューであるため)、ハッシュにレンダリングしてからJSONに変換します。

于 2012-10-23T11:13:59.823 に答える