Проблема заключается в том, что will_paginate создает URL-адреса для каждой страницы (это не имеет никакого отношения к jQuery).
По своей воле will_paginate старается угадать базовый URL-адрес пользователя страницы.включен (внутренне он использует контроллер / действие для этого).Затем этот базовый URL объединяется с любыми дополнительными параметрами, передаваемыми помощнику will_paginate с использованием :params
и последовательных номеров страниц.
На данный момент (will_paginate 3.0.3), чтобы перезаписать это поведение по умолчанию, необходимо написатьВаш пользовательский класс LinkRenderer.Ниже приведен пример такого класса - он использует новую дополнительную опцию :base_link_url
, которую можно передать помощнику вида will_paginate.Переданная строка затем используется в качестве базы при создании ссылок на страницы.Если опция :base_link_url
не пропущена, она вернется к поведению по умолчанию.
Поместите следующий класс туда, где rails может найти его при загрузке (например, / lib, если вы добавили / lib в пути автозагрузки вapplication.rb
):
# custom_link_renderer.rb
class CustomLinkRenderer < WillPaginate::ActionView::LinkRenderer
def prepare(collection, options, template)
@base_link_url = options.delete :base_link_url
@base_link_url_has_qs = @base_link_url.index('?') != nil if @base_link_url
super
end
protected
def url(page)
if @base_link_url.blank?
super
else
@base_url_params ||= begin
merge_optional_params(default_url_params)
end
url_params = @base_url_params.dup
add_current_page_param(url_params, page)
query_s = []
url_params.each_pair {|key,val| query_s.push("#{key}=#{val}")}
if query_s.size > 0
@base_link_url+(@base_link_url_has_qs ? '&' : '?')+query_s.join('&')
else
@base_link_url
end
end
end
end
Использование:
# in your view
will_paginate collection, :renderer => CustomLinkRenderer, :base_link_url => '/anything/you/want'
А теперь вернемся к вашему делу.К этому времени вы, вероятно, увидите решение - вы можете иметь два виджета will_paginate на одной странице с разными базовыми URL, передавая различные опции :base_link_url
для этих двух.