2012-04-09 7 views
0

Ich habe folgende .erb Ansicht in einer Sinatra App:Wie führe ich Inline-Berechnungen für zwei Variablen in einer ERB-Datei durch?

<% sessions.each do |session| %> 
    <%= session.balance_beginning %> 
    <%= session.balance_ending %> 
<% end %> 

Es funktioniert wie erwartet, den Anfang Anzeige und für jede Sitzung aufgezeichnet Salden endet. Ich möchte die Nettosalden aus der ERB-Datei berechnen, aber ich kann nicht herausfinden, wie es geht. Ich habe versucht, Variationen davon:

<% sessions.each do |session| %> 
    <%= session.balance_ending - session.balance_beginning %> 
<% end %> 

Das funktioniert nicht. Ich erhalte den folgenden Fehler in Sinatra:

undefined method `-' for nil:NilClass 

Wie mache ich, was ich versuche zu tun?

+3

Erstens, führen Sie keine Berechnungen in Ansichten - extrahieren Sie sie zu einem Helfer. Zweitens ist 'session.balance_ending'' nil', also der Fehler. – Zabba

+0

Sollte eine Antwort sein;) – d11wtq

+1

@ d11wtq: Und zu bemerken, dass "nil.to_i" ist Null würde es noch besser machen. –

Antwort

3

Right @Zabba, in diesem Fall denke ich, Sie würden eine Methode zu Ihrem Session-Modell hinzufügen, so dass Sie session.net_balance aufrufen können.

Dann würden Sie in Ihren balance_ending und balance_beginning Methoden mit Null behandeln, entweder einen Fehler auslösen oder Null zurückgeben, wenn das gültig ist.

Verwandte Themen