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}]}