1

JBuilder を使用して、JSON 構造を構築したいと思います。

{
"name": "John Doe", 
"reservations": [
    {
        "restaurant": "ABC",
        "reservation_time": "2012/12/01 20:00",
        "name": "John Doe"
    }, 
    {
        "restaurant": "CDE",
        "reservation_time": "2012/12/04 20:00",
        "name": "John Doe"
    }
]
}

{
"name": "Jane Doe", 
"reservations": [
    {
        "restaurant": "Little Bites",
        "reservation_time": "2012/12/01 20:00",
        "name": "Jane Doe"
    }, 
    {
        "restaurant": "Thai Taste",
        "reservation_time": "2012/12/04 20:00",
        "name": "Jane Doe"
    }
]
}

ここで ESoftのソリューションを試しましたが、うまくいきませんでした。彼の解決策では、「名前」属性がハードコードされているように見えますか?

JBuilder にデータから name 属性の値を生成させるにはどうすればよいですか (データは Rails コントローラーから .json.jbuilder ファイルに配列として渡されます)。(つまり、John Doe が私のデータベースに 5 つの予約を持ち、Jack Daniels が 3 つの予約を持っている場合、名前の属性を「John Doe」と「Jack Daniels」にします)。

4

1 に答える 1

3

blockwithメソッドを使用して、json.some_var_name名前付き配列 (またはその他の結果) を取得できます。

user属性name(文字列) とreservations(参照モデル配列)があるとします。この例の完全な jbuilder テンプレートは次のようになります。

json.array!(@users) do |user|
    json.name user.name

    json.reservations do
        json.array!(user.reservations) do |reservation|
            json.restaurant reservation.restaurant.name
            json.reservation_time reservation.time
            json.name user.name
        end
    end
end
于 2014-05-01T18:30:17.270 に答える