2014-05-19 5 views
2

Code Jbuilder:Jbuilder Créer tableau Multidimensional

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 

Dans mes modèles chaque 'lieu' has_many 'Venue_Images'. Le JSON ci-dessus me donne un tableau d'objets pour lieu_images dans le tableau des lieux principaux, comme prévu.

Les objets venue_image sont comme ceci:

#<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 
} 

J'ai besoin de parcourir les images des sites dans le code de JBuilder je peux en quelque sorte donc appeler des aides Paperclip/S3 (c.-à-.image.url (: moyen)) sur eux, car ils ne sont pas disponibles dans la vue JS. J'ai besoin d'obtenir ces URLs dans le tableau @venues plutôt que toutes les autres propriétés de l'objet trombone, donc je peux les parcourir dans le JS et les afficher à mon avis.

Quelle est la meilleure façon de faire cela? J'ai essayé quelques blocs différents et j'ai regardé le wiki de jbuilder et quelques articles, mais je n'arrive pas à faire quoi que ce soit.

Merci

Répondre

2

Si je vous comprends bien, est-ce que vous aviez à l'esprit:

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 

Cela devrait vous donner un hachage JSON comme ceci:

"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

Merci, laisse-moi essayer ce matin et reviens vers toi! –

+0

A travaillé parfaitement, merci. –

+0

De rien. Content de l'entendre! – mmichael