2010-04-12 22 views
5

tengo unas los siguientes modelos: carrilesgroup_by con fields_for y 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 

En mi código de la vista, tengo el siguiente formulario.

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

Esto funciona y me permite ver y editar los cuestionarios como desee. Sin embargo, tengo un requisito adicional para dividir los cuestionarios en sus propias tablas agrupadas por el hito al que están asociadas, en lugar de en una sola tabla. Parece que el método group_by está diseñado para lograr esto, pero no puedo hacer que funcione como se desea dentro de la etiqueta.

Puede ser que me esté perdiendo algo obvio, ya que soy un principiante ... Se agradece cualquier ayuda.

Respuesta

7

¿Es esto lo que estás buscando?

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

Sí - eso es todo. A veces puede ser difícil ver el bosque por los árboles. Gracias por ayudarme. –

+0

¿Cómo funciona esto? ¿Cómo funciona rails group_by milestone ... cuando el hito aún no está asociado al release_questionnaire? Lo pregunto porque tenía esto funcionando en mi propia aplicación, y de repente dejó de funcionar porque no puede encontrar un 'hito' para agrupar u ordenar. El cuestionario de lanzamiento aún no existe, y por lo tanto tampoco lo hace el hito ... entonces, ¿cómo podría saber cómo agruparse? (por simplicidad estoy usando los nombres de los atributos de este ejemplo) – hellion

Cuestiones relacionadas