Использование group_by с fields_for и accepts_nested_attributes_for - PullRequest
5 голосов
/ 13 апреля 2010

У меня есть следующие модели рельсов:

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 предназначен для достижения этой цели, но я не могу заставить его работать так, как нужно внутри тега.

Может быть, я упускаю что-то очевидное, поскольку я новичок ... Любая помощь приветствуется.

1 Ответ

7 голосов
/ 13 апреля 2010

Это то, что вы ищете?

<% 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...