在我分页时动态显示每页的总数

时间:2016-09-20 06:01:57

标签: ruby-on-rails

Rails 3.2

我的invoices_controller.rb中有以下内容:

def index
  @invoices = Invoice.all.paginate(:page => params[:page], per_page: 10)
  ....
  @invoices_total = @invoices.compact.inject(0){ |sum, invoice| sum + invoice.total }

这里是观点(苗条):

- if @invoices.any?
  tfooter
    tr
      td colspan="#{checkin_action ? '10' : '9'}" Total
      td style='text-align:right'
        '$#{number_with_delimiter(@invoices_total)}

这允许我在页脚中显示每个页面的总数。问题是,当我点击下一步,继续下一页时,总数不会改变。如何在每次更改页面时动态更改它。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我更新了我的答案。

无需编写此查询。

@invoices_total = @invoices.compact.inject(0){ |sum, invoice| sum + invoice.total }

我正在给出逻辑以获得页面中@invoices显示的总和。

#Declare a variable to store the sum of the invoices.
<% invoices_total = 0 %>

<% @invoices.each do |invoice|%>
  # While looping through your invoices add invoice total to that above variable
  <% invoices_total += invoice.total %>
  #Rest of your code for show
<% end %>

#Finally the Total Sum like this

<%= invoices_total %>

答案 1 :(得分:0)

一般情况下,无论您在哪个页面,都不应更改invoices_total金额。invoices_total可以这样写:

@invoices_total = Invoice.count

如果total是invoics的列,您可以:

@invoices_total = Invoice.pluck('total')