Как вытащить элементы из этого массива - PullRequest
0 голосов
/ 11 сентября 2010
>> 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>

Я что-то упустил

Ответы [ 2 ]

2 голосов
/ 11 сентября 2010

events это не массив, это Bandsintwon::Event объект .Кроме того, region является свойством из venue, которое является другим объектом в events, типа Bandsintown::Venue.Не имея классов для справки, возможно, что существуют методы venue и region, которые можно использовать для получения переменных экземпляра @venue и @region:

events.first.venue.region

В противном случае,вы можете использовать instance_variable_get, чтобы получить значение напрямую:

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

... но, вероятно, лучше использовать метод (поэтому вы должны добавить один, если это ваш класс, а другой не существует!)

1 голос
/ 11 сентября 2010
events.first.venue.region
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...