[英]Ruby on Rails: Iterate Through Nested Params
我想遍历提交的参数。 参数数组最多可以达到三个级别。 目前,我只能像这样迭代第一级。
params[:job].each do |v, k|
#do something with k value, only if it's string. If it's array then find its string value.
end
当您不知道自己期望什么时,如何迭代参数?
一种简单的方法是使用is_a?
if v.is_a? Array
# do whatever
elsif v.is_a? String
# do whatever
else
# something else
end
某种递归解决方案可能是最好的选择,例如:
def handle_hash hash
hash.each do |k, v|
if v.is_a? Hash
handle_hash v
elsif v.is_a? String
# handle string
end
end
end
然后,您可以只调用handle_hash params[:job]
def nested_params(nested_hash={})
nested_hash.each_pair do |k,v|
case v
when String, Fixnum then
dosomething(v)
when Hash then nested_params(v)
else raise ArgumentError, "Unhandled type #{v.class}"
end
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.