All you need to do to your original code is add a condition to make
sure @payments is not null:
@payment_total = @payments.sum{ |payment| payment.value } unless
@payments.nil?
Or can payment.value be nil for some payments but not others? Inject
could help in that case:
@payment_totals = @payments.inject(0) { |sum, p| sum + p.value unless
p.value.nil? }
Before running either one of these, you can initialize both @total and
@payment_total to zero:
@total, @payment_total = 0, 0
Hope that helps.
PS: Wonder if you need all of these to be @instance_variables ?
On Apr 1, 10:16 am, Tom Harvey <[email protected]>
wrote:
> I was doing this:
>
> �...@line_items = LineItems.find_all_by_invoice_id(params[:id])
> �...@payments = Payments.find_all_by_invoice_id(params[:id])
>
> @total = @line_items.sum{ |item| item.cost }
> @payment_total = @payments.sum{ |payment| payment.value }
>
> @balance = @total - @payment_total
>
> But when no payments had been made it was coming up with an error when
> trying to sum nil, so I did this:
>
> begin
> @payment_total = @payments.sum{ |payment| payment.value }
> rescue
> @payment_total = 0
> end
>
> So, when the sum failed it returned @payment_total as zero. Now, SURELY,
> there's a better way to do this? I'm sure it's obvious when you know
> how. Please, enlighten me.
> --
> Posted viahttp://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---