2013-08-09 27 views
14

Tôi đang cố gắng tạo tệp JSON để truy cập biến thể của sản phẩm thông qua mã biến thể. Lý tưởng nhất, tôi có thể gọi variations.abcdefgh chủ yếu hỏi để xác định một cấu trúc như thế này:Các khóa động JBuilder cho các thuộc tính mô hình

{ 
    "variations":{ 
     "abcdefgh":{ 
     "available":true, 
     "price":"12.00" 
     }, 
     "ijklmnop":{ 
     "available":false, 
     "price":"25.00" 
     } 
    } 
} 

Làm một cái gì đó trong các sản phẩm/show.json.jbuilder như

json.variations @product.variations 

mang lại cho tôi định dạng như vậy:

{ 
    "variations":[ 
     { 
     "available":true, 
     "price":"12.00", 
     "product_code":"abcdefgh" 
     }, 
     { 
     "available":true, 
     "price":"25.00", 
     "product_code":"ijklmnop" 
     } 
    ] 
} 

có thể JavaScript của tôi có thể tốt hơn, nhưng tôi muốn có thứ gì đó dễ tiếp cận hơn dựa trên mã sản phẩm. Gần nhất tôi đã nhận được là

@product.variations.each do |variation| 
    json.set! variation.product_code, variation 
end 

nhưng tôi chưa tìm thấy giải pháp sẽ đặt các đối tượng được định dạng chính xác này thành trẻ em thành thuộc tính biến thể. Bất cứ ai chạy vào một cái gì đó tương tự trước?

Trả lời

30
json.set! :variations do 
    @variations.each do |variation| 
    json.set! variation.product_code do 
     json.(variation, :available, :price) 
    end 
    end 
end 

^^ này nên làm điều đó

+0

Tuyệt vời. Giải pháp rất tốt! –

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