Rails 3 - «Больше» ajax-пагинации с Kaminari - PullRequest
7 голосов
/ 20 апреля 2011

Я пытаюсь выполнить нумерацию страниц в стиле «Твиттер» с помощью кнопки «Еще», чтобы загрузить результаты с Kaminari.

Я нашел этот вопрос здесь

Но я не могу понять, как заставить это работать и если это хороший подход.

Заранее спасибо

Ответы [ 2 ]

17 голосов
/ 05 мая 2011

Вы имеете в виду, что вам нужна кнопка "больше"? Как насчет создания такого помощника?

# usage: 
#   link_to_next_page(@items)
#   link_to_next_page(@items, :remote => true)  # Ajax
def link_to_next_page(scope, name, options = {}, &block)
  param_name = options.delete(:param_name) || Kaminari.config.param_name
  link_to_unless scope.last_page?, name, {param_name => (scope.current_page + 1)}, options.merge(:rel => 'next') do
    block.call if block
  end
end

Я готов включить этот вид вспомогательных методов в гем, если вы сочтете это полезным, поэтому, пожалуйста, дайте мне знать, что вы думаете. Спасибо!

2 голосов
/ 25 апреля 2012

Имейте в виду, что link_to_next_page(@items, :remote => true) не будет работать правильно из коробки. Поскольку он не может определить текущую страницу после Ajax-запроса, ссылка должна быть заменена после получения новых элементов. Используя ненавязчивый JavaScript, это будет выглядеть примерно так:

# app/views/items/index.js.erb
$(".items").append("<%= escape_javascript(render(@items)) %>");
$(".more_link").replaceWith("<%= escape_javascript(
    link_to_next_page @items, 'View more',
                        :remote => true,
                        :id     => :view_more) %>");

Если это не имеет смысла, взгляните на ненавязчивый скринкаст Javascript на Railscasts.

...