2013-02-12 103 views
0

Controller.rb轨道记录推

@payments = PaymentDetail.joins(:project) 

在视图文件@ payments.count等于550

file @ payments.count等于550,而它必须是([email protected]_errors.count)

为什么我不能将@payment_error记录推入@payments?

回答

1

您正在尝试PaymentError数据添加到PaymentDetail表这是不对的。如果您在阵列中使用它,请使用to_a

你可以这样做:

@payments = PaymentDetail.joins(:project).to_a + PaymentError.joins(:project).to_a 

要为阵列使用will_paginate。在你的控制器中加入这一行:

`require 'will_paginate/array'` 
0

这是因为延迟加载。

PaymentDetail.joins(:project) 

这不会立即加载付款。相反,只要开始访问付款,付款就会被加载(例如,在each循环中)。您可以通过将结果转换为数组来强制加载。试试这个:

@payments = PaymentDetail.joins(:project).to_a 
@payment_errors = PaymentError.joins(:project).to_a 
@payments += @payment_errors 

或者,如果你不需要@payment_errors作为单独的变种:

@payments = PaymentDetail.joins(:project).to_a + PaymentError.joins(:project).to_a 
+0

但我想用@payments与will_paginate gem是那么它必须是的ActiveRecord ::关系不array.I想也订购。 – 2013-02-12 03:29:02

+1

那么,我不知道。 – 2013-02-12 03:30:52

+0

感谢您的分享 – 2013-02-12 03:34:11