从嵌套哈希中访问值

时间:2015-07-06 00:58:31

标签: ruby hash

在Ruby on Rails应用程序上收集用户的一些信息之后,我有:

params[:store] # => {"products"=>{"id"=>"89,90,91"}}

我需要提取字符串"89,90,91"。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

params这里是一个Hash对象,在Ruby中,是一个数据结构,是一个键值对列表。例如,以下是键值对的Hash对象:

user = { first_name: "Michael", last_name: "Chabon", occupation: "author" }

如果要从user中提取值,则需要传递所需值的键。例如,假设我们想要从last_name获取密钥user的值。我们只需致电user[:last_name]即可返回Chabon

同样,我们可以嵌套哈希,这会让我们回到你的例子中。让我们看看父Hash params,它可能看起来像这样:

params = {:store=>{"products"=>{"id"=>"89,90,91"}}, . . . }

如果我们致电params[:store],则会返回以下内容:

{"products"=>{"id"=>"89,90,91"}}

现在,由于我们正在处理嵌套的哈希,我们可以堆叠我们的密钥。例如,如果我们调用params[:store]["products"],则会返回以下内容:

{"id"=>"89,90,91"}

现在,由于您正在寻找"89,90,91",我们可以使用["id"]params[:store]["products"]["id"]堆叠到上面,并返回以下内容:

"89,90,91"

如果您想将其存储在变量中,您只需将我们上面所做的内容分配给变量:

ids_as_string = params[:store]["products"]["id"]

答案 1 :(得分:0)

给出的例子只是:

params[:store]['products']['id']
#=> "89,90,91"