will_paginate с кнопкой «загрузить больше» в Rails 3.1 с использованием jQuery - PullRequest
2 голосов
/ 05 декабря 2011

Я читал, что другие следили за Railscast Endless Page и модифицировали его, чтобы использовать кнопку «загрузить больше». Однако, когда я пытался изменить его, я просто добавлял те же самые произведения. Другими словами, он все еще тянет со страницы current_page.

Когда я нажимаю свой div «load more», я загружаю триггер:

$("#products").append("<%= escape_javascript render( @products) %>");

В моем контроллере у меня есть

@products = Product.where(:created_at => 180.days.ago..Time.now).order(sort_column + " " + sort_direction).page(params[:page]).per_page(16)

Мне интересно, смогу ли я каким-то образом использовать .next_page will_paginate.

Кто-нибудь делал что-то подобное с will_paginate, используя Rails 3 и jQuery?

Ответы [ 2 ]

6 голосов
/ 05 декабря 2011

Попробуйте что-то вроде этого

В просмотре продукции

# Show link only if there are more than one page and pass page and sorting parameters
<% unless @products.total_pages < 2 %>
    <%= link_to 'show_more', method_that_returns_products_path(:sort => sort_column, :direction => sort_direction, :page => 2), :remote => true, :id => 'show_more_link' %>
<% end %>

и в ответе js

$("#products").append("<%= escape_javascript render( @products) %>");

// Hide link if it is last page otherwise update link
<% if @products.total_pages == @products.current_page %>
    $("#show_more_link").hide();
<% else %>
    $("#show_more_link").attr("href", "<%= method_that_returns_products_path(:sort => sort_column, :direction => sort_direction, :page => (@products.current_page + 1)) %>");
<% end %>
0 голосов
/ 05 декабря 2011

Вы передаете параметр :page во время запроса? Например: http://yourdomain.com/products?page=3

Если нет, will_paginate не будет знать, что вы хотите сместить запрос, и он просто продолжит возвращать страницу 1 результатов.

...