2010-04-12 14 views
5

Mam modeli szyn następujące:Korzystanie group_by z fields_for i 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 

w moim kodu widoku, mam następujący formularz.

<% 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 %> 

To działa i pozwala mi wyświetlać i edytować ankiety zgodnie z potrzebami. Mam jednak dodatkowy wymóg, aby rozdzielić ankiety na własne tabele pogrupowane według kamieni milowych, do których są przypisane, zamiast w jednej tabeli. Wygląda na to, że metoda group_by jest zaprojektowana, aby to osiągnąć, ale nie mogę jej uruchomić tak, aby działała w tagu.

Możliwe, że brakuje mi czegoś oczywistego, ponieważ jestem początkującym ... Każda pomoc jest doceniana.

Odpowiedz

7

Czy tego właśnie szukasz?

<% 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

Tak - to wszystko. Czasami może być trudno zobaczyć las dla drzew. Dziękuję za pomoc. –

+0

Jak to działa? W jaki sposób rails group_by kamień milowy ... kiedy kamień milowy nie jest jeszcze powiązany z wersją release_questionire? Pytam, ponieważ działałem we własnej aplikacji i nagle przestało działać, ponieważ nie może znaleźć "kamienia milowego" do grupowania lub sortowania. Kwestionariusz zwolnienia jeszcze nie istnieje, dlatego też nie ma kamienia milowego .... więc, jak mógł wiedzieć, jak grupować według niego? (dla uproszczenia używam nazw atrybutów z tego przykładu) – hellion

Powiązane problemy