如何在Ruby中迭代部分哈希值

时间:2015-02-10 09:33:05

标签: ruby-on-rails ruby hash

在Rails环境中,我从表单中获取了一个params哈希。 除了其他人,比如

params[:vocab][:name] 
params[:vocab][:priority]

我有3个字段tag_1,tag_2,tag_3,其值存储在

params[:vocab][:tag_1] 
params[:vocab][:tag_2] 
params[:vocab][:tag_3]

我的问题是: 我可以迭代这三个哈希键吗? 我想做某事......

for i in 1..3 do
  iterator = ":tag_" + i.to_s
  puts params[:vocab][iterator.to_sym]
end

但这不起作用。

2 个答案:

答案 0 :(得分:3)

您的方法不起作用,因为:

':tag_2'.to_sym
# => :":tag_2"

如果从":tag_" + i.to_s

中删除前导冒号,它将起作用

你也可以这样做,迭代键:

[:tag_1, :tag_2, :tag_3].each { |key| puts params[:vocab][key] }

答案 1 :(得分:3)

您可以通过插值构造符号;使用冒号为字符串添加前缀将导致Ruby将其解释为符号。

(1..3).each do |i|
  puts params[:vocab][:"tag_#{i}"]
end