2010-04-12 3 views
5

je un des modèles de rails suivants:En utilisant group_by avec fields_for et 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 

Dans mon code de la vue, je le formulaire ci-dessous.

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

Ceci fonctionne et me permet de voir et éditer les questionnaires comme désiré. Cependant, j'ai une exigence supplémentaire pour briser les questionnaires sur dans leurs propres tableaux regroupés par étape ils sont associés, plutôt que dans une seule table. Il semble que la méthode group_by soit conçue pour accomplir cela, mais je ne peux pas le faire fonctionner comme souhaité dans la balise.

Il se peut que je me manque quelque chose d'évident, comme je suis un débutant ... Toute aide est appréciée.

Répondre

7

Est-ce que vous cherchez?

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

Oui, c'est tout. Parfois, il peut être difficile de voir la forêt pour les arbres. Merci de m'avoir aidé. –

+0

Comment cela fonctionne-t-il? Comment les rails sont-ils groupés par jalon ... quand le jalon n'est pas encore associé au release_questionnaire? Je demande parce que j'avais ce travail dans ma propre application, et il soudainement cessé de fonctionner parce qu'il ne peut pas trouver « étape » pour groupe ou trier par. Le questionnaire de sortie n'existe pas encore, et par conséquent, le jalon n'est pas non plus ... alors, comment pourrait-il savoir comment le grouper? (pour simplifier Im en utilisant les noms d'attribut de cet exemple) – hellion

Questions connexes