Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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 on rails 如何获得包含嵌套关系的完整列表?_Ruby On Rails_Ruby On Rails 3_Activerecord_Map_Associations - Fatal编程技术网

Ruby on rails 如何获得包含嵌套关系的完整列表?

Ruby on rails 如何获得包含嵌套关系的完整列表?,ruby-on-rails,ruby-on-rails-3,activerecord,map,associations,Ruby On Rails,Ruby On Rails 3,Activerecord,Map,Associations,我有一个与活动相关的任务模型,我想得到一个包含所有任务及其相关活动的数组/哈希,如下所示: <% task_group =[ ['Task1', {'Activity1' => 1, 'Activity2' => 2}], ['Task2', {'Activity3' => 3, 'Activity4'=> 4}] ] %> 您可以使用: Task.includes(:activities).all.map{|t| [t.nam

我有一个与活动相关的任务模型,我想得到一个包含所有任务及其相关活动的数组/哈希,如下所示:

<% task_group =[
     ['Task1', {'Activity1' => 1, 'Activity2' => 2}], 
     ['Task2', {'Activity3' => 3, 'Activity4'=> 4}]
    ] %>
您可以使用:

Task.includes(:activities).all.map{|t| [t.name, t.activities.inject({}){|H, a| H[a.name] = a.id; H}]}
编辑:

Task.includes(:activities).all.map{|t| [t.name, t.activities.inject({}){|h, a| h[a.name] = a.id; h}]}

你为什么要做
.map(&:name)
部分,为什么?我想我需要使用.map来获取某种数组?不,获取数组调用
.all.to a
。你想要这个:
['Task1','Activity1',['Task1','Activity2'],['Task2','Activity3'],['Task2','Activity3']
?你到底想要哪种结构?啊,我得用rtfm。我想我需要上面的结构(任务组)来选择一个组。这很简单:
f.input:activity\u id,:as=>:grouped\u select,:collection=>Task.all,:group\u method=>:activities
。谢谢你的帮助。这看起来不错,但我得到一个错误“这部分的形式参数不能是常数”| H,a |”
Task.includes(:activities).all.map{|t| [t.name, t.activities.inject({}){|h, a| h[a.name] = a.id; h}]}