如何遍历 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
在 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