>> 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>
我错过了什么
答案 0 :(得分:2)
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 :(得分:1)
events.first.venue.region