Hej, jeśli chcesz paginate produkty następnie spróbuj tego:
app/controllers/products_controller.rb
def index
@products = Product.paginate(page: params[:page], per_page: 10)
end
views/produkty/index.html.erb
<div class = "sort_paginate_ajax"><%= render 'products' %></div>
odsłon /products/_products.html.erb
<% @products.each do |product| %>
# your code
<% end %>
<%= will_paginate @products %>
views/produkty/index.js.erb
$('.sort_paginate_ajax').html("<%= escape_javascript(render("products"))%>")
aktywa/javascripts/application.js
$(function() {
$(".sort_paginate_ajax th a, .sort_paginate_ajax .pagination a").on("click", function(){
$.getScript(this.href);
return false;
});
});
Więc najpierw wzywamy metodę paginate na Produktu dla wszystkich produktów, tutaj offset będzie ustawiona zgodnie z params[:page]
, a limit zostanie ustawiony za pomocą opcji per_page
. Również wykonujemy renderowanie products
częściowe, które będą renderowane za każdym razem, gdy otwierana jest inna strona.
W częściowego zaproszenia na @products
które chcesz, a następnie will_paginate
metoda jest stosowana na @products
, ale również tworzy params[:page]
, który jest używany w kontrolerze.
Teraz w odpowiedzi na żądanie ajax treść renderowania div
o klasie sort_paginate_ajax
z częściowym, który stworzyliśmy.
Również do żądania żądania ajax, na skrypt przechwytywania obciążenia dokumentu wszystkich a
znaczników w div.sort_paginate_ajax
, i zwraca wartość false.
Teraz strona zostanie wywołana z żądania ajax
Mam nadzieję, że będzie Ci pomóc.
Widziałem twoją odpowiedź w kilku miejscach - i po wprowadzeniu twojego kodu kontroler jest zdecydowanie trafiony, a wyniki są wyciągane z bazy danych. Ale strona wcale się nie zmienia. czego mi brakuje? Dziennik serwera mówi "Rendered jobs/_jobstable.html.erb (80.7ms)", ale faktyczna strona na moim ekranie nie jest renderowana. – notaceo
Przeglądarka wykonuje wywołanie ajax jquery (typu script), które oczekuje odpowiedzi JS, która zaktualizuje widok. Jednym ze sposobów odpowiedzi jest JS <% = "$ (" body "). Html ('# {escape_javascript (render' some_partial ')}');. Html_safe%> Ale możesz zmodyfikować kod nieco, aby zrobić cokolwiek chcieć. –
Ten hack działa jak urok Railsów 3.x, ale nie jest już dostępny dla Rails 4.2. 'link_to_function' jest przestarzałe. Czy mógłbyś wprowadzić aktualizację? Z góry dziękuję. – BriceB