2010-04-12 7 views
5

Ich habe eine folgenden Schienen Modelle:Mit group_by mit fields_for und 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 

Meiner Ansicht Code, ich habe das folgende Formular.

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

Dies funktioniert und ermöglicht mir, die Fragebögen wie gewünscht anzuzeigen und zu bearbeiten. Ich habe jedoch eine zusätzliche Anforderung, die Fragebögen in ihre eigenen Tabellen zu zerlegen, die nach dem Meilenstein gruppiert sind, mit dem sie verknüpft sind, und nicht in einer einzigen Tabelle. Es scheint, als ob die group_by-Methode ein Entwurf ist, um dies zu erreichen, aber ich kann es nicht wie gewünscht innerhalb des Tags arbeiten.

Es kann sein, dass ich etwas offensichtlich vermisse, wie ich ein Anfänger bin ... Jede Hilfe wird geschätzt.

Antwort

7

Ist das wonach Sie suchen?

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

Ja - das ist es. Manchmal kann es schwierig sein, den Wald für die Bäume zu sehen. Danke, dass Sie mir geholfen haben. –

+0

Wie funktioniert das? Wie funktioniert Rails group_by meilenstein ... wenn der meilenstein dem release_questionnaire noch nicht zugeordnet ist? Ich frage, weil ich das in meiner eigenen App funktionierte und es plötzlich nicht mehr funktioniert, weil es keinen "Meilenstein" zum Gruppieren oder Sortieren nach finden kann. Der Release-Fragebogen existiert noch nicht, und deshalb auch nicht der Meilenstein .... wie könnte er also wissen, wie man ihn gruppiert? (Zur Vereinfachung verwende ich die Attributnamen aus diesem Beispiel) – hellion

Verwandte Themen