如何从这个数组中拉出元素

时间:2010-09-11 17:49:01

标签: ruby-on-rails ruby

>> 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 个答案:

答案 0 :(得分:2)

events不是数组,而是Bandsintwon::Event 对象。此外,regionvenue属性,它是events中属于Bandsintown::Venue类型的另一个对象。如果没有可供参考的类,可能会有venueregion方法可用于获取@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