Hey, se si desidera impaginare i prodotti quindi provare questo:
app/controllers/products_controller.rb
def index
@products = Product.paginate(page: params[:page], per_page: 10)
end
Visto/prodotti/index.html.erb
<div class = "sort_paginate_ajax"><%= render 'products' %></div>
vista /products/_products.html.erb
<% @products.each do |product| %>
# your code
<% end %>
<%= will_paginate @products %>
views/prodotti/index.js.erb
$('.sort_paginate_ajax').html("<%= escape_javascript(render("products"))%>")
attività/javascript/application.js
$(function() {
$(".sort_paginate_ajax th a, .sort_paginate_ajax .pagination a").on("click", function(){
$.getScript(this.href);
return false;
});
});
Quindi, prima che stiamo chiamando il metodo paginate sul prodotto per tutti i prodotti, qui un offset sarà impostato in base a params[:page]
e il limite verrà impostato dalle opzioni per_page
. Inoltre stiamo rendendo il rendering parziale products
che verrà visualizzato ogni volta che viene aperta un'altra pagina.
In chiamata parziale su @products
che si desidera, e quindi will_paginate
metodo viene applicato sulla @products
, ma crea anche params[:page]
che viene utilizzato in controller.
Ora in risposta a una richiesta di richiesta java il contenuto di div
avente classe sort_paginate_ajax
con il parziale che abbiamo creato.
Anche per richiedere una richiesta ajax, sullo script di caricamento del carico di tutti i tag a
in div.sort_paginate_ajax
e restituire false.
Ora pagine saranno chiamati con richiesta AJAX
Spero che questo avrebbe aiutato.
Ho visto la tua risposta in alcuni punti e, dopo aver implementato il codice, il controller è sicuramente colpito e i risultati vengono estratti dal database. Ma la pagina non sta cambiando affatto. Cosa mi manca? Il log del server dice "Lavori resi/_jobstable.html.erb (80.7 ms)" ma la pagina effettiva sullo schermo non viene visualizzata. – notaceo
Il browser sta effettuando una chiamata jquery ajax (di tipo script) che si aspetta una risposta JS che aggiornerà la visualizzazione. Un modo per rispondere è con JS <% = "$ ('body'). Html ('# {escape_javascript (render' some_partial ')}');". Html_safe%> Ma puoi modificare leggermente il codice per fare tutto ciò che vuoi volere. –
Questo hack funziona come un fascino su Rails 3.x ma non è più disponibile per Rails 4.2. 'link_to_function' è deprecato. Potresti inserire l'aggiornamento? Grazie in anticipo. – BriceB