0

控制器.rb

@payments = PaymentDetail.joins(:project)

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

当我像这样更改控制器时

@payments = PaymentDetail.joins(:project)
@payment_errors = PaymentError.joins(:project)
@payment_errors.each {|payment_error| @payments << payment_error}

仍在查看文件@payments.count 等于 550 而它必须是 (550+@payment_errors.count)

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

4

2 回答 2

1

您正在尝试将PaymentError数据添加到PaymentDetail错误的表中。如果您在数组中需要它,请使用to_a.

你可以这样做:

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

用于will_paginate数组。在你的控制器中添加这一行:

 `require 'will_paginate/array'`
于 2013-02-12T03:22:25.177 回答
0

这是因为延迟加载。

PaymentDetail.joins(:project)

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

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

或者,如果您不需要@payment_errors单独的 var:

@payments = PaymentDetail.joins(:project).to_a + PaymentError.joins(:project).to_a
于 2013-02-12T03:20:26.687 回答