2012-02-21 30 views
6

Tôi có rabl mẫu này:RABL: đối tượng JSON mà không có gốc chính

object @photo 
attributes :id 
child :comments do 
    attributes :id, :body 
end 

nào mang lại cho tôi câu trả lời JSON này:

{ 
    photo: { 
    id: 1, 
    comments: [ 
     { 
     comment: { 
      id: 1, 
      body: 'some comment' 
     } 
     }, 
     { 
     comment: { 
      id: 2, 
      body: 'another comment' 
     } 
     } 
    ] 
    } 
} 

Nhưng tôi muốn nó trông như thế này:

{ 
    id: 1, 
    comments: [ 
    { 
     id: 1, 
     body: 'some comment' 
    }, 
    { 
     id: 2, 
     body: 'another comment' 
    } 
    ] 
} 

Tại sao rabl quấn từng phần tử trong mảng bằng một đối tượng phụ được gọi là comment. Bằng cách này khi tôi truy cập vào bộ sưu tập trong javascript tôi phải viết:

var comment = image.comments[0].comment 

thay vì:

var comment = image.comments[0] 

Tôi biết rằng nếu tôi bao gồm :comments trong danh sách các thuộc tính cho đối tượng @photo nó hoạt động theo cách tôi muốn, nhưng khi tôi muốn một mức độ liên kết lồng nhau cho mỗi đối tượng comment, không có cách nào để xử lý điều đó ngoài việc sử dụng child, nhưng điều đó mang lại cho tôi phản hồi JSON mà tôi không muốn.

Có lẽ tôi chỉ hiểu lầm toàn bộ vấn đề - ai đó có thể giải thích hoặc giúp đỡ? Cảm ơn!

Trả lời

7

OK!

Tạo một file mới trong config/initializers/rabl_config.rb:

Rabl.configure do |config| 
    config.include_json_root = false 
    config.include_child_root = false 

end 
+2

Tôi có vấn đề này giống nhau và phát hiện ra rằng tôi cần phải thêm "config.include_child_root = false" ngoài include_json_root = false –

Các vấn đề liên quan