如何传递一个块作为if语句的参数?

时间:2012-03-28 00:20:22

标签: ruby

我目前正在撕开我的头发找到解决方案。我需要解析一些Json,但json gem不允许我解析超过2级,所以我必须做很多每个块。并且为了消除一些我不想要的数据,我需要做一个if / else。 所以这就是我想做的事情:

result['person']['participation'].each do |participation| 

   if participation['movie']['release'] { |release| release['releaseState']['code'] == 3011 || release['releaseState']['code'] == nil }
     next
   else
     puts title = participation['movie']['originalTitle']
   end 
end

我试过'除非'我也担心自己无法通过声明。如果没有,你有办法做我需要的吗?

非常感谢!

这是JSON http://api.allocine.fr/rest/v3/filmography?partner=YW5kcm9pZC12M3M&profile=medium&code=5568&filter=movie&format=json

1 个答案:

答案 0 :(得分:1)

我需要查看您的文档结构...但如果参与['movie'] ['release']是一个数组,您可以使用Array#any?

result['person']['participation'].each do |participation| 

   if participation['movie']['release'].any? { |release| release['releaseState']['code'] == 3011 || release['releaseState']['code'] == nil }
     next
   else
     puts title = participation['movie']['originalTitle']
   end 
end

如果它不是数组,请发布文档示例。