2013-08-16 20 views
6

Bazı JSON verilerini oluşturmak için rabl kodunu takip etmeliyim.rabl'de yanlış çocuk kökü adı ve alt öğe kökü adı ayarlanamıyor

object @event 
attributes :id, :EID, :name, :address, :description, :latitude, :longitude, :time, :created_at 
node(:rsvp_count) { |event| event.rsvp_users.count } 
node(:check_in_count) { |event| event.checkedin_users.count } 
node(:FID) { |event| event.creater.FID if event.creater} 

child :rsvp_users, :object_root => false do 
    extends 'users/index' 
end 

child :checkedin_users, :object_root => false do 
    extends 'users/index' 
end 

Ve üretir veri aşağıdaki gibidir: Sen event karma yok sayabilirsiniz

[ 
    { 
     "event": { 
      "id": 2, 
      "EID": 123458, 
      "name": "event no.2", 
      "address": "189 elm st", 
      "description": "awesome event", 
      "latitude": 10, 
      "longitude": 10, 
      "time": "2013-10-20T18:00:00Z", 
      "created_at": "2013-08-15T21:06:21Z", 
      "rsvp_count": 3, 
      "check_in_count": 0, 
      "FID": 12345678, 
      "users": [ 
       { 
        "id": 4, 
        "FID": 112233445, 
        "name": "name1", 
        "using_app": true 
       }, 
       { 
        "id": 3, 
        "FID": 9999, 
        "name": "name2", 
        "using_app": false 
       }, 
       { 
        "id": 2, 
        "FID": 123456789, 
        "name": "name3-robot", 
        "using_app": true 
       } 
      ], 
      "checkedin_users": [] 
     } 
    } 
] 

, garip şeyler 2 users dizide dibinde gerçekleşiyor. Gördüğünüz gibi ben "rsvp_users" için root param ayarlanmış olsa bile

Yani, çocuk rsvp_users dizi adı users olarak görünüyor. Ancak, checkedin_users dizisi için (şu anda boş olan), hiçbir şey yapmama gerek yok ve adı otomatik olarak checkedin_users. Burada ne oluyor? Ramb'da bir böcek mi? Yoksa eksik olduğum bir şey mi?

+2

"Çocuk: rsvp_users =>: rsvp_users,: object_root => false" denediniz mi? – Bigxiang

+0

Evet, ve bu aslında bana bir hata veriyor. Ama eğer ': rsvp_users =>: rsvp_users' tek yapmazsa:: object_root => false', bu iyi olurdu. Ama dizideki her nesnenin bir adı olmasını istemiyorum. – Enzo

+1

bunu deneyin "child {: rsvp_users =>: rsvp_users}, {: object_root => false}", makinemde çalışıyor. – Bigxiang

cevap

7

Tam olarak aynı hatayla karşılaştım, sorun, object_root öğesinin false değerine ayarlanmış gibi görünüyor.

child({:rsvp => :rsvp}, {:object_root => false}) do 
    extends "users/index" 
end 

Not yuvarlak parantez "()" ve ayraçlar hem "{}": Biraz tecrübe ve bu fevkalade çalıştığını bulduk Bigxiang yorumlama ardından .

İlgili konular