2010-04-12 2 views
5

accepts_nested_attributes_for 나는 다음과 같은 레일 모델이 : 나는 다음과 같은 형식을 가지고, 내보기 코드에서fields_for와 GROUP_BY 사용하고

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

예 - 맞습니다. 때로는 나무 숲을보기가 어려울 수 있습니다. 도와 줘서 고마워. –

+0

어떻게 작동합니까? 레일스 group_by 마일스톤 ... 마일스톤이 아직 release_questionnaire와 관련이없는 경우 어떻게됩니까? 나는 내 자신의 앱에서이 작업을했기 때문에 묻습니다. 그룹화하거나 정렬 할 '이정표'를 찾을 수 없기 때문에 갑자기 작동이 멈췄습니다. 릴리스 설문지는 아직 존재하지 않으며 그로 인해 이정표도 나타나지 않습니다 .... 그래서 그룹화 방법을 어떻게 알 수 있습니까? (단순함을 위해이 예에서 속성 이름을 사용함) – hellion

관련 문제