Если вы используете версию Will Paginate для Rails 3 (в настоящее время "3.0.pre2"), вы можете использовать опцию :renderer
и настроить способ генерации ссылок.
Итак, во-первых, есливы не в курсе, тогда вы можете следовать инструкциям по установке и инструкции по использованию из будет разбивать страницы на вики .
Затем в lib
вы можете создать свой собственный рендер, который будет перезаписыватьгенерация ссылки, возможно, что-то вроде
class SearchLinkRenderer < WillPaginate::ViewHelpers::LinkRenderer
protected
def url(page)
@base_url_params ||= begin
url_params = base_url_params
merge_optional_params(url_params)
url_params
end
url_params = @base_url_params.dup
add_current_page_param(url_params, page)
@template.search_with_keywords_url(url_params)
end
end
, а затем вызовите ее с помощью
<%= will_paginate @results, :container => false, :class => 'pagination ajax', :renderer => SearchLinkRenderer %>
Средство рендеринга по умолчанию использует
@template.url_for(url_params)
, что «портит»ваши ссылки.Вы можете использовать любой путь от @template
, так что
@template.search_with_keywords_url(url_params)
должно сработать.Теперь, если вы вызовете will_paginate со своим собственным рендерером, он должен пройти, используя ваш путь вместо url_for
, и параметры должны хорошо совпадать.Если они не проверят то, что url_params
установлено, и сравните его с вашими сопоставителями маршрутов.
Возможно, есть более простой способ переписать это, но это казалось довольно простым и согласуется с тем, как ожидает will_paginateВы можете настроить его вывод.Я обнаружил, что у Роба Андертона есть отличная статья о настройке will_paginate здесь , так что, возможно, они могут предложить больше понимания.