2016-09-20 4 views
0
Rails 3.2 

Paginieren Ich habe folgend in meinem invoices_controller.rb:zeigen dynamisch insgesamt pro Seite, wie ich

def index 
    @invoices = Invoice.all.paginate(:page => params[:page], per_page: 10) 
    .... 
    @invoices_total = @invoices.compact.inject(0){ |sum, invoice| sum + invoice.total } 

Hier ist die Ansicht (slim):

- if @invoices.any? 
    tfooter 
    tr 
     td colspan="#{checkin_action ? '10' : '9'}" Total 
     td style='text-align:right' 
     '$#{number_with_delimiter(@invoices_total)} 

Dies ermöglicht es mir zu Zeigen Sie die Summe für jede Seite in der Fußzeile an. Das Problem ist, dass wenn ich auf Next klicke, um zur nächsten Seite zu gehen, sich die Summe nicht ändert. Wie bekomme ich es dynamisch mit jeder Seitenänderung zu ändern.

Irgendwelche Ideen?

+0

Wie Sie insgesamt in der Ansicht zeigen? –

+0

Der Teil in Ihrer Fußzeile, der den Gesamtwert anzeigt, wird nicht neu geladen, wenn Sie auf eine andere Seite klicken. Sie müssen den Ajax-Erfolg durch Paginierung erfassen und den Gesamtbetrag erneut laden. – EJ2015

+0

@CharanKumarBorra: siehe meine Bearbeitung – EastsideDeveloper

Antwort

0

Ich aktualisierte meine Antwort.

Keine Notwendigkeit, diese Abfrage zu schreiben.

@invoices_total = @invoices.compact.inject(0){ |sum, invoice| sum + invoice.total } 

I Logik gebe die Summe von @invoices zeigen in der Seite zu bekommen.

#Declare a variable to store the sum of the invoices. 
<% invoices_total = 0 %> 

<% @invoices.each do |invoice|%> 
    # While looping through your invoices add invoice total to that above variable 
    <% invoices_total += invoice.total %> 
    #Rest of your code for show 
<% end %> 

#Finally the Total Sum like this 

<%= invoices_total %> 
+0

Summe ist eine Spalte in der Rechnungstabelle und ist keine Zählung – EastsideDeveloper

0

Im Allgemeinen ist die invoices_total Menge sollte nicht geändert werden, unabhängig davon, welche Seite Sie sind in der invoices_total auf diese Weise schreiben kann.

@invoices_total = Invoice.count

Oder wenn insgesamt invoics der Spalte ist, Sie kann:

@invoices_total = Invoice.pluck('total')

+0

Summe ist nicht gleich zu zählen. total ist eine Spalte – EastsideDeveloper