2010-04-12 91 views
5

我有以下型号的轨道:使用GROUP_BY与fields_for和accepts_nested_attributes_for

class Release < ActiveRecord::Base 
    has_many :release_questionnaires, :dependent => :destroy 
    accepts_nested_attributes_for :release_questionnaires 
    ... 
end class 

class ReleaseQuestionnaire < ActiveRecord::Base 
    belongs_to :release 
    belongs_to :milestone 
    ... 
end class 

在我看来的代码,我有以下形式。

<% form_for @release, ... do |f| %> 
    ... 
    <table class="questionnaires"> 
    <% f.fields_for :release_questionnaires, @release.release_questionnaires.sort_by{|ra| ra.questionnaire.name} do |builder| %> 
     ... 
    <% end %> 
    </table> 
<% end %> 

这个工作,并允许我查看和编辑问卷调查所需。但是,我还有一个额外的要求,即将调查问卷分成根据其关联的里程碑分组的各自表格,而不是单个表格。看起来好像group_by方法是为了实现这个目的而设计的,但我无法在标签内部按照需要工作。

这可能是我失去了一些明显的东西,因为我是一个初学者...任何帮助表示赞赏。

回答

7

这是你在找什么?

<% form_for @release, ... do |f| %> 
    ... 
    <% @release.release_questionnaires.group_by {|rq| rq.milestone }.each do |milestone, questionnaires_group| %> 
    <table class="questionnaires"> 
     <% f.fields_for :release_questionnaires, questionnaires_group.sort_by{|rq| rq.name} do |builder| %> 
     ... 
     <% end %> 
    </table> 
    <% end %> 
<% end %> 
+0

是 - 就是这样。有时可能很难看到树木的森林。谢谢你的协助。 – 2010-04-13 14:18:49

+0

这是如何工作的?当里程碑尚未与release_questionnaire关联时,rails group_by milestone如何实现?我问,因为我在我自己的应用程序中工作,它突然停止工作,因为它无法找到“里程碑”分组或排序。发布调查问卷还不存在,因此这个里程碑也没有......所以,它怎么知道如何按它分组? (为了简化,使用本例中的属性名称) – hellion 2016-04-15 01:28:05