2010-09-11 2 views
0
>> events.first 
    => #<Bandsintown::Event:0x1037caf98 @venue=#<Bandsintown::Venue:0x1037c9580 @region="Australia", @bandsintown_id="160698", @latitude="-37.8161090", @city="Melbourne Vic", @bandsintown_url="http://www.bandsintown.com/venue/160698", @longitude="144.9725040", @country="Australia", @name="Rod Laver Arena at Melbourne Park">, @bandsintown_id="3671194", @on_sale_datetime=nil, @artists=[#<Bandsintown::Artist:0x1037c9328 @bandsintown_url="http://www.bandsintown.com/Metallica", @mbid="65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab", @name="Metallica">], @ticket_status="available", @bandsintown_url="http://www.bandsintown.com/event/3671194", @ticket_url="http://www.bandsintown.com/event/3671194/buy_tickets", @status=nil, @datetime=Wed Sep 15 19:00:00 -0400 2010> 
> events.first[:region] 
NoMethodError: undefined method `[]' for #<Bandsintown::Event:0x1037caf98> 
>> events.first.region 
NoMethodError: undefined method `region' for #<Bandsintown::Event:0x1037caf98> 

Suis-je manque quelque choseComment puis-je tirer des éléments de ce tableau

Répondre

2

events est pas un tableau, il est un Bandsintwon::Eventobjet. En outre, region est une propriété de venue, qui est un autre objet au sein de events, de type Bandsintown::Venue. Sans avoir les classes de référence, il est possible qu'il pourrait y avoir venue et region méthodes que vous pouvez utiliser pour obtenir les variables @venue et @region exemple:

events.first.venue.region 

A défaut, vous pouvez utiliser instance_variable_get pour obtenir la valeur directement:

region = events.first.instance_variable_get("@venue").instance_variable_get("@region") 

... mais il est probablement préférable d'utiliser une méthode (vous devez donc ajouter un si c'est votre classe et on n'existe pas!)

1
events.first.venue.region 
Questions connexes