Я предполагаю, что ваш модальный диалог закрывается, потому что вы обновляете страницу новым параметром.Вот официальные инструкции по использованию ajax с will_paginate, поэтому вам не нужно обновлять страницу:
https://github.com/mislav/will_paginate/wiki/Ajax-pagination
Вы также можете попробовать решение RemoteLinkRenderer
, если вас не волнуетсканируемость этих страниц.По сути, создайте помощника с именем remote_link_renderer.rb
и вставьте в него:
class RemoteLinkRenderer < WillPaginate::LinkRenderer
def prepare(collection, options, template)
@remote = options.delete(:remote) || {}
super
end
protected
def page_link(page, text, attributes = {})
@template.link_to_remote(text, {:url => url_for(page), :method => :get}.merge(@remote), attributes)
end
end
Затем, на ваш взгляд, убедитесь, что ваш вызов will_paginate имеет следующие параметры:
<%= will_paginate @items, :renderer => 'RemoteLinkRenderer' , :remote => { :update => 'items_div'} %>
где @items
это то, что ваша переменная разбита на страницы, а items_div
это идентификатор обновляемого элемента dom.
Для получения дополнительной информации вы можете зайти в Google по номеру will_paginate remotelinkrenderer
.
Что касается вашего второго вопроса, проблема в том, что обе страницы используют один и тот же параметр для отслеживания, на какой странице они находятся.,Вы можете исправить это, в представлении при вызове will_paginate, включая опцию :param_name
в одном или обоих экземплярах, например, :param_name=>:tab2_page
.Здесь указано: http://rubydoc.info/gems/will_paginate/2.3.15/WillPaginate/ViewHelpers