如何遍历 Ruby 中的部分哈希

How can I iterate over part of a hash in Ruby

在 Rails 环境中,我从表单中获取参数散列。 除了其他人,例如

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

但这不起作用。

您的方法无效,因为:

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

因此,如果您从 ":tag_" + i.to_s

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

您也可以这样做,遍历键:

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

您可以通过插值构造符号;在字符串前加上冒号会导致 Ruby 将其解释为符号。

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