Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails-使用HTTParty遍历json哈希和数组_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby Rails-使用HTTParty遍历json哈希和数组

Ruby Rails-使用HTTParty遍历json哈希和数组,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,因此,我有下面的业务发生,这是有效的。。。但即使是新手,我也觉得这看起来很可怕 结构如下: “每个产品都有一组艺术家。仅返回具有正确艺术家的产品” def fetch_产品(艺术家) result=get(“/#{@id}/products.js”,:headers=>{'Accept'=>'application/json'}) 产品=[] 结果.每个do |产品| 如果不是产品['artists'],则查找所有{i | i['name'].downcase==artist.downcase}

因此,我有下面的业务发生,这是有效的。。。但即使是新手,我也觉得这看起来很可怕

结构如下: “每个产品都有一组艺术家。仅返回具有正确艺术家的产品”

def fetch_产品(艺术家)
result=get(“/#{@id}/products.js”,:headers=>{'Accept'=>'application/json'})
产品=[]
结果.每个do |产品|
如果不是产品['artists'],则查找所有{i | i['name'].downcase==artist.downcase}.empty?

产品代码并不像现在这样糟糕。但是,您可以跳过
结果。每个
循环只需直接使用
find_all
即可获得您正在查找的所有实例,而无需循环

一个简单的例子:

x={ :a => ['a','b'] , :b => ['c','d'], :c=>['b','e']}

x.find_all { |k,v| !v.grep(/^A$/i).empty? }
返回:

 [[:a, ["a", "b"]]]
grep
方法搜索
v
(散列值-数组)以查找与特定正则表达式匹配的任何条目

如果您不想使用
grep
,您可以直接实现您的逻辑:

x.find_all {|k,v| v.any? { |m| m.downcase == "a" } }

代码并没有那么糟糕。但是,您可以跳过
结果。每个
循环只需直接使用
find_all
即可获得您正在查找的所有实例,而无需循环

一个简单的例子:

x={ :a => ['a','b'] , :b => ['c','d'], :c=>['b','e']}

x.find_all { |k,v| !v.grep(/^A$/i).empty? }
返回:

 [[:a, ["a", "b"]]]
grep
方法搜索
v
(散列值-数组)以查找与特定正则表达式匹配的任何条目

如果您不想使用
grep
,您可以直接实现您的逻辑:

x.find_all {|k,v| v.any? { |m| m.downcase == "a" } }

太好了!第二个例子很清楚,应该很有用。谢谢你的提醒。我一直在努力如何正确地把积木放在积木中,但这很明显。太棒了!第二个例子很清楚,应该很有用。谢谢你的提醒。我一直在努力如何正确地把积木放在积木中,但这很明显。