2014-05-19 2 views
2

제이빌더 코드를 빌드 : 내 모델 각각의 '장소'has_many 'Venue_Images'에서제이빌더는 다차원 배열을

json.array!(@venues) do |venue| 
    json.extract! venue, :id, :name, :longitude, :latitude, :price_range, :venue_category_id, :venue_images, :address, :short_description, :max_capacity 
end 

합니다. 위의 JSON은 예상대로 메인 장소 배열 내에서 venue_images에 대한 객체 배열을 제공합니다.

venue_image 객체

는 다음과 같습니다

#<Item:0x007fc97559b960> { 
        :id => 1, 
    :image_content_type => "image/jpeg", 
     :image_file_name => "chanel.jpg", 
     :image_file_size => 28880, 
     :image_updated_at => 2012-04-09 21:00:08 UTC 
} 

은 어떻게 든 내가 종이 클립/S3 도우미를 호출 할 수 있습니다 제이빌더 코드의 장소 이미지를 반복해야합니다 (즉, .image.url (: 중)) 그 (것)들은 JS보기에서 유효하지 않기 때문에, 그들에. 이 URL을 클립 클립 객체의 다른 모든 속성이 아닌 @venues 배열로 가져와야하므로 JS에서 반복 처리하고 내보기에 표시 할 수 있습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 몇 가지 다른 블록을 시도하고 jbuilder 위키와 몇 가지 기사를 살펴 보았지만 작동시킬 수는 없습니다.

감사

답변

2

내가 제대로 이해하고있어 경우, 이것은 당신이 생각했던 것입니다 :

json.array!(@venues) do |venue| 
    json.extract! venue, :id, :name, :longitude, :latitude, :price_range, :venue_category_id, :address, :short_description, :max_capacity 

    json.venue_images venue.venue_images do |vi| 
    json.url vi.image.url(:medium)) 
    json.id vi.id 
    json.image_content_type "image/jpeg" 
    json.image_file_name "chanel.jpg" 
    json.image_file_size 28880 
    json.image_updated_at "2012-04-09 21:00:08 UTC" 
    end 
end 

이 당신에게 JSON의이 같은 해시 주어야한다 :

"venue": { 
    "id": 1, 
    "name": "Foo", 
    "longitude": "180 degrees", 
    "latitude": "90 degrees", 
    "price_range": "100-200", 
    "venue_category_id": 2, 
    "address": "500 Poop Lane", 
    "short_description": "Blah blah, foo foo", 
    "max_capacity": 500, 

    "venue_images": [ 
    { 
     "url": "http://poop.com", 
     "id": 5, 
     "image_content_type": "image/jpeg", 
     "image_file_name": "chanel.jpg", 
     "image_file_size": 28880, 
     "image_updated_at": "2012-04-09 21:00:08 UTC" 
    }, 
    etc. 
    ] 
} 
+0

감사합니다, 오늘 아침 한번 시도해보고 너에게 돌아와! –

+0

완벽하게 일했습니다. 감사합니다. –

+0

반갑습니다. 그것을 듣고 기뻐! – mmichael