我想知道我在这里做错了什么。
这是我刚刚从1.8.6升级的ruby 1.9.2代码
def prepares_data(hash_nodes)
@array_of_node = Array.new
hash_nodes.each do | node |
nodeId = node.values_at('self')[0].split('/').last
text = node.values_at('data')[0].values_at('name')
puts text
@array_of_node << { :nodeId => nodeId, :text => text }
end
puts @array_of_node
return @array_of_node
end
所以基本上,代码只是添加一堆Hash to Array,这很好。当我在循环中打印文本时,我也得到纯文本结果
What allergies do you have? What dont you like? What is your specific diet?
然而,当我打印出@array_of_node时,我得到了这个
{:nodeId=>"7", :text=>["What allergies do you have?"]} {:nodeId=>"8", :text=>["What dont you like?"]} {:nodeId=>"9", :text=>["What is your specific diet?"]}
在文中我有额外的[“...”],我不想要。我如何摆脱它,我真的不明白这一部分,因为这段代码在ruby 1.8.7中运行良好。我在这里做错了吗?
非常感谢你。
答案 0 :(得分:0)
values_at方法返回一个数组,所以我认为这就是它发生的原因。尝试传递一个键,如下所示:
text = node.values_at('data')[0]['name']