Rails: обработка двухстраничных списков в одном представлении

Предполагая следующую модель:

class Account < ActiveRecord::Base
  has_many :orders
end

class Order < ActiveRecord::Base
  belongs_to :account

  scope :active, -> { where('orders.state = ?', 'ACTIVE') }
  scope :closed, -> { where('orders.state <> ?', 'ACTIVE') }

end

В режиме account/show у меня есть два списка: один для активных ордеров, а другой для закрытых.

Теперь мне нужно добавить пейджинг для каждого из списков (используя will_paginate gem), но я не знаю, как лучше всего маршрутизировать запросы для этого и как обрабатывать две коллекции в действии контроллера.


person Michael D.    schedule 07.06.2014    source источник


Ответы (1)


Как объясняется здесь, вам нужно установить разные значения :param_name для ваших двух вызовов will_paginate:

<%= will_paginate @orders.active, :param_name => 'active_page' %>
<%= will_paginate @orders.closed, :param_name => 'closed_page' %>

https://github.com/mislav/will_paginate/wiki/API-documentation

person tirdadc    schedule 07.06.2014
comment
Как насчет контроллера? к какой коллекции следует применить фильтр .page()? - person Michael D.; 07.06.2014
comment
догадаться. вместо @orders.active создан экземпляр var @active_orders = @account.orders.active.page(params['active_page']). - person Michael D.; 07.06.2014