【发布时间】:2020-05-08 04:35:07
【问题描述】:
我有以下 OpenStruct 数据结构,我正在尝试获取键/值对
> #<OpenStruct conditions=[#<OpenStruct field="Out_of_country", operator="us", values=["true"]>, #<OpenStruct field="Status__c",
> operator="jp", values=["'Approved'"]>, #<OpenStruct field="Status__c",
> operator="gb", values=["'Rejected'"]>], conjunction="and">
Ruby 代码:
dataResult = nil
dataResult = data['condition'].include?('out_of_country']
这就是您从 OpenStruct 中提取键/值对的方式吗?
更新:
你说得对,我使用的是to_s,然后我删除了这就是我要访问的键/值
myresult = data['mainCondtion']
p myresult --> I got this result:
> #<OpenStruct conditions=[#<OpenStruct field="Out_of_country", operator="us", values=["true"]>, #<OpenStruct field="Status__c",
> operator="jp", values=["'Approved'"]>, #<OpenStruct field="Status__c",
> operator="gb", values=["'Rejected'"]>], conjunction="and">
然后我尝试访问field 和values
myresult.each_pair{ |key, value| puts "#{key}: #{value}" }
我收到此错误:
# 的未定义方法“each_pair”
【问题讨论】:
-
这与一个最小的可重现示例相去甚远。我们完全不知道
data是什么。 -
data有一个更大的卡盘,它是一个 OpenStruct,我只过滤掉了mainCondition,它是data的子集 -
是的,但是如果您需要调试帮助,您必须向我们提供重现手头问题的示例和实际错误消息。我们不知道发生了什么,以及
myresult = data['mainCondtion']和myresult.each_pair之间发生了什么。如果我们实际上无法复制您的代码并运行它,这只会导致一系列无休止的后续问题。
标签: ruby-on-rails ruby openstruct