Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 如何使用';每个';方法?_Ruby_Arrays_Ruby On Rails 3.2 - Fatal编程技术网

Ruby 如何使用';每个';方法?

Ruby 如何使用';每个';方法?,ruby,arrays,ruby-on-rails-3.2,Ruby,Arrays,Ruby On Rails 3.2,我正在尝试使用Rails执行此非基本查询: proj_repartitions = ProjRepartition.includes(:proj_contributions).find( proj_project.proj_charges.each{|pc| pc.proj_repartition_id} ) 关键是我需要将一个“id”数组传递给find方法。 我想从ActiveRecord对象数组中提取这些“id”,其中每个对象都有一个“id”属性 当我尝试使用Rails控制台时: proj

我正在尝试使用Rails执行此非基本查询:

proj_repartitions = ProjRepartition.includes(:proj_contributions).find( proj_project.proj_charges.each{|pc| pc.proj_repartition_id} )
关键是我需要将一个“id”数组传递给
find
方法。 我想从ActiveRecord对象数组中提取这些“id”,其中每个对象都有一个“id”属性

当我尝试使用Rails控制台时:

proj_project.proj_charges.each{|pc| pc.proj_repartition_id}
我得到了与
proj_项目完全相同的数组。proj_收费

我做错了什么

==更新===

根据答案,我的最终工作代码是:

proj_project.proj_charges.collect{|pc| pc.proj_repartition_id}

与其使用每个try-map或collect,不如返回一个数组。

与其使用每个try-map或collect,不如返回一个数组。

每个都只执行每个项目的do块代码,但不“保存”返回值

Collect和Map为数组中的每个项目和返回值执行do块代码


希望这是有意义的

每个项目只执行每个项目的do块代码,而不“保存”返回值

proj_project.proj_charges.map(&:proj_repartition_id)
Collect和Map为数组中的每个项目和返回值执行do块代码

希望这是有道理的

proj_project.proj_charges.map(&:proj_repartition_id)
短文

proj_project.proj_charges.map{|pc| pc.proj_repartition_id}
短文

proj_project.proj_charges.map{|pc| pc.proj_repartition_id}

伟大的它与“collect”一起工作。我仍然想知道为什么它不适用于每个…每个都只是一种循环方式,但不返回任何内容,而collect返回一个数组。有没有可能找到最好的答案?太好了!它与“collect”一起工作。我仍然想知道为什么它不适用于每个…每个都只是一种循环方式,但不返回任何内容,而collect返回一个数组。有没有可能找到最好的答案?