2012-10-20 20 views
1

型號嵌套GROUP_BY和在軌道上的排序紅寶石

1平發票表sales_invoice_date,you_ref除其他領域

控制器

def raw 
    @invoices = Invoice.find(:all, :order => 'sales_invoice_date, id') 
    @invoice_days = @invoices.group_by { |day| day.sales_invoice_date } 
end 

查看

<% @invoice_days.sort.each do |day, invoices| %> 
    <h2><%= day.to_date.to_s(:long) %></h2> 
    <% for invoice in invoices %> 
    <div class="invoice_line"> 
    <strong><%= invoice.your_ref %></strong> 
    Sales invoice date: <%= invoice.sales_invoice_date.to_date.to_s(:long) %> 
    </div> 
    <% end %> 
<% end %> 

這讓我中途我的目標。它打印出以下幾點:

September 9, 2012 
    2222 Sales invoice date: September 9, 2012 
    5555 Sales invoice date: September 9, 2012 
    2222 Sales invoice date: September 9, 2012 
October 1, 2012 
    1111 Sales invoice date: October 1, 2012 
    1111 Sales invoice date: October 1, 2012 
    1111 Sales invoice date: October 1, 2012 
November 11, 2012 
    3333 Sales invoice date: November 11, 2012 
December 12, 2012 
    0000 Sales invoice date: December 12, 2012 

我需要的是對獨特的「your_ref」值的日期內環路GROUP_BY和排序再一種方式,它會是這個樣子:

September 9, 2012 
    2222 
     2222 Sales invoice date: September 9, 2012 
     2222 Sales invoice date: September 9, 2012 
    5555 
     5555 Sales invoice date: September 9, 2012 

October 1, 2012 
    1111 
     1111 Sales invoice date: October 1, 2012 
     1111 Sales invoice date: October 1, 2012 
     1111 Sales invoice date: October 1, 2012 
November 11, 2012 
    3333 
     3333 Sales invoice date: November 11, 2012 
December 12, 2012 
    0000 
     0000 Sales invoice date: December 12, 2012 

感謝

回答

3

而不是

<% for invoice in invoices %> 
    <div class="invoice_line"> 
     <strong><%= invoice.your_ref %></strong> 
     Sales invoice date: <%= invoice.sales_invoice_date.to_date.to_s(:long) %> 
    </div> 
    <% end %> 

嘗試:

<% invoices.group_by(&:your_ref).sort.each do |ref, ref_invoices| %> 
    <div class="invoice_line"> 
     <strong><%= ref %></strong> 
    </div> 
    <% for invoice in ref_invoices %> 
     <strong><%= invoice.your_ref %></strong> 
     Sales invoice date: <%= invoice.sales_invoice_date.to_date.to_s(:long) %> 
    <% end %> 
    <% end %> 

這也將通過參考編組發票。

+0

完美,正是我所期待的,謝謝! – user1137277