【发布时间】:2011-04-09 14:03:20
【问题描述】:
我正在使用 ruby-aaws gem 访问 Amazon AWS API,但没有详细介绍 API 或 gem,我认为我的问题更多的是一般性质。
当我查询 API 时,我最终会得到“对象数组”,我们称之为 item,其中包含 API 响应。
我可以轻松访问数组中的数据,例如puts item.item_attributes.artist.to_s
现在 API 返回标识符是 Rails 中的保留字的属性,例如格式或绑定。
这样做:puts item.item_attributes.format.to_s 将返回 method not found
而puts item.item_attributes.binding.to_s 将返回一些对象哈希,例如#<Binding:0xb70478e4>。
我在做的时候可以看到那个名字下有值puts item.item_attributes.to_yaml
生成的 yaml 显示的片段艺术家和绑定:--- !seq:Amazon::AWS::AWSArray
- !ruby/object:Amazon::AWS::AWSObject::ItemAttributes
__val__:
artist: !seq:Amazon::AWS::AWSArray
- !ruby/object:Amazon::AWS::AWSObject::Artist
__val__: Summerbirds in the Cellar
binding: !seq:Amazon::AWS::AWSArray
- !ruby/object:Amazon::AWS::AWSObject::Binding
__val__: Vinyl
这可能是一个非常详细的解释,一个非常简单的解决方案,但我似乎找不到解决方案。
编辑
终于找到了。我想这是因为它是一个对象数组,呃......
puts item.item_attributes[0].binding.to_s
【问题讨论】:
-
item.binding返回什么? -
Object#binding返回该对象的范围。那是 ruby,不是 rails。 -
item.binding 返回 nil。问题是我不能使用 item.item_attributes.binding 作为语法,因为 'binding' 是保留字。虽然没有像“艺术家”这样的词,但 item.item_attributes.artist 有效。
标签: ruby-on-rails ruby amazon-web-services