2014-05-25 92 views
1

我有一個模型任務訂單has_many發票。我的任務訂單屬性之一是「總開具發票」。我的發票屬性之一是「金額」。我想要一個Total Invoiced =「金額」總和的關係。我想讓它顯示在我的task_order/index頁面中。這是我的任務訂單指數控制器:Summing child objects rails 4.0

def index 
@task_orders = TaskOrder.all 
@invoices = @task_order.invoices 
@task_order.invoicedAmount = @task_order.invoices.sum(:amount) 
end 

我收到了零差錯未定義的方法`發票:NilClass

我也想提一提我的代碼在task_order /表演作品:

def show 
    @invoices = @task_order.invoices 
    @task_order.invoicedAmount = @invoices.sum(:amount) 
end 

作爲後續問題,我比我使用Active Record查詢更熟悉SQL查詢。有人可以指導我如何呈現純SQL查詢的結果嗎?

謝謝!

+0

你意識到你沒有在索引中分配'@ task_order'?不應該'invoiced_amount'成爲'TaskOrder'上的方法嗎?另外,爲什麼你不遵循Rails命名約定? ('invoicedAmount') –

回答

2

您的index方法不會起作用,因爲您從@task_order.invoices得到@invoices,但是您聲明@task_orders。注意單數與複數的區別。

+0

喜@ jken13579 - 把你的意見考慮在內,我修改我的代碼是: DEF指數 [在] task_orders = TaskOrder.all [在]發票= [在] task_order.invoices [at] task_orders.each do | task_order | [在] task_order.invoicedAmount = [在] invoices.sum(:量) 結束 結束 ,我仍然得到同樣的錯誤.. –

+2

你的問題,是因爲使用了'@task_order .invoices'並且你沒有聲明'@ task_order'。再次,不是單數與複數。另外,你應該使用'@invoices = Invoice.all',因爲它好像你想要所有的發票,而且@ @ task_orders.invoices'將是無效的。你應該仔細閱讀[Rails Guides](http://guides.rubyonrails.org/)。 –