2016-10-20 1 views
0

Diese Frage bezieht sich auf this zuvor gestellte Frage.Schienen 5 Mehrere Summen und verbinden

Meine DB Spalt für Modell Taxline: ID, EMPFANG, TAXID, BASE, AMOUNT mit Einträgen: 1,1,001,30 $, 3 $

2,1,001,50 $, 5 $

3,2,001,20 $, 2 $

Und dann eine zweite Tabelle mit Spalten: TICKETID, TICKETNUMBER

Mein Controller

class TaxlinesController < ApplicationController 

    def index 
    @taxlines = Taxline.group(:RECEIPT).sum(:AMOUNT) 
    end 

end 

Meine Ansicht

<% @taxlines.each do |receipt, amount| %> 

     <td><%= receipt %></td> 
     <td><%= amount %></td> 
<% end %> 

Dies funktioniert gut mit entsprechendem Gesamtbetrag ein Ticket für jede Zeile zu zeigen.

Frage 1. Was ist der richtige Weg, um auch die Summe von BASE im Blick zu zeigen? Ich habe versucht .sum(:AMOUNT, :BASE) and .sum(:AMOUNT).sum(:BASE), aber sie funktionieren beide nicht.

Frage 2. Wenn ich jetzt zB <%= taxline.TAXID %> aufrufen bekomme ich einen Fehler. Um dies zu beheben, habe ich versucht, in Sicht <% @taxlines.each do |receipt, amount, taxid| %> and <td><%= taxid %></td>. And in controller @taxlines = Taxline.group(:RECEIPT).sum(:AMOUNT).select(:TAXID) hinzuzufügen. Aber es zeigt eine leere Spalte.

Frage 3. Ich möchte den TICKETNAME-Wert aus der TICKETS-Tabelle anzeigen. Ich habe bereits ein Ticketline-Modell belongs_to :ticket eingestellt. Ich nehme an, dass ich nach dem Lösen von Frage 1 in der Lage sein werde, ticketline.ticket.TICKETNAME.Right zu tun?

Antwort

0

Frage 1:

dieses

@taxlines = Taxline.group(:RECEIPT).select("SUM(AMOUNT) AS AMOUNT, SUM(BASE) AS BASE") 

Question2 Versuchen:

Für den Zugriff auf TAXID Sie diese in Gruppenspalte hinzufügen müssen.

@taxlines = Taxline.group(:RECEIPT, :TAXID).select("SUM(AMOUNT) AS AMOUNT, SUM(BASE) AS BASE, TAXID") 

Frage 3:

die anderen Tabellenvariablen zugreifen zu können, müssen Sie Anweisung an die Abfrage hinzuzufügen beitreten und dann sollten Sie Gruppe.

@taxlines = Taxline.joins(:ticket).group(:RECEIPT, :TAXID).select("SUM(AMOUNT) AS AMOUNT, SUM(BASE) AS BASE, TAXID, TICKETNAME") 

In der Ansichtsseite, versuchen Sie die folgende.

<% @taxlines.each do |taxline| %> 

     <td><%= taxline.AMOUNT %></td> 
     <td><%= taxline.BASE %></td> 
     <td><%= taxline.TAXID %></td> 
     <td><%= taxline.TICKETNAME %></td> 

<% end %> 

S.S .: Dies wurde nicht versucht.

+0

Funktioniert perfekt. Vielen Dank! – Catmal

+0

Also, pls up abstimmen meine Antwort und markieren Sie sie als richtige Antwort :-) – Jayaprakash

+0

Done thanks again! – Catmal