Salve! Sto dando un’occhiata al plug-in will_paginate. Facile, funziona
tutto. Ho visto come si pagina e anche i vari metodi paginate_by_+, solo
che volevo capirci di più: esattamente, dalla view, che metodi e che
varialbili ho a disposizione oltre a quelli di base?
Tipo, se voglio farmi sputare la current_page o pages_count, che sono
proprietà del plugin (ho spulciato anche tutto il codice e visto i docs
online), come faccio dalla view?
Se ad esempio voglio vedere @total_pages, è possibile? E devo per forza
passare dal controller?
E il mio ipotetico @posts (= Post.paginate blabla), oltre ai find
mascherati da paginate, eredita qualcos’altro di tutte le proprietà dei
vari oggetti di paginazione standard di Rails?
Comincio a rispondermi da solo, ma ogni aggiunta e aiuto è assolutamente
gradita.
Intanto il mio @posts, che in soldoni è un’istanza di
WillPaginate::Collection, sia nel controller sia nella view è rifornito
dei seguenti metodi:
page_count > ritorna @total_pages
offset > titorna il numero di entries pari alla prima-1 della pagina
corrente. In altre parole, se ce ne sono 30 per pagina, la prima della
pagina 2 è la numero 31 e dunque l’offset == 30.
previous_page > ritorna, se c’è, @current_page-1
next_page > ritorna, se c’è, @current_page+1
Lo stesso oggetto è rifornito delle seg. proprietà :
current_page
per_page
total_entries
Per ora è tutto. Attendo aiuti/suggerimenti!
Luca R. wrote:
Salve! Sto dando un’occhiata al plug-in will_paginate. Facile, funziona
tutto. Ho visto come si pagina e anche i vari metodi paginate_by_+, solo
che volevo capirci di più: esattamente, dalla view, che metodi e che
varialbili ho a disposizione oltre a quelli di base?
Tipo, se voglio farmi sputare la current_page o pages_count, che sono
proprietà del plugin (ho spulciato anche tutto il codice e visto i docs
online), come faccio dalla view?
Se ad esempio voglio vedere @total_pages, è possibile? E devo per forza
passare dal controller?
E il mio ipotetico @posts (= Post.paginate blabla), oltre ai find
mascherati da paginate, eredita qualcos’altro di tutte le proprietà dei
vari oggetti di paginazione standard di Rails?
Salve! Sto dando un’occhiata al plug-in will_paginate. Facile, funziona
tutto. Ho visto come si pagina e anche i vari metodi paginate_by_+, solo
che volevo capirci di più: esattamente, dalla view, che metodi e che
varialbili ho a disposizione oltre a quelli di base?
domanda magari stupida (il plugin in questione non l’ho mai usato)
quali vantaggi da l’uso di questo plugin rispetto al paginate di default
di
rails?? dai metodi che hai descritto non mi sembra ci sia niente in
più…
–
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
Salve! Sto dando un’occhiata al plug-in will_paginate. Facile, funziona
tutto. Ho visto come si pagina e anche i vari metodi paginate_by_+, solo
che volevo capirci di pi�: esattamente, dalla view, che metodi e che
varialbili ho a disposizione oltre a quelli di base?
domanda magari stupida (il plugin in questione non l’ho mai usato)
quali vantaggi da l’uso di questo plugin rispetto al paginate di default
di
rails?? dai metodi che hai descritto non mi sembra ci sia niente in
pi�…
–
everything has got to end sometime we were satellites drifting off into
space
vega 4 - burn and fade away
Nota: copio incollo dal mio codice. @entries sono quelli che prima
chiamavo genericamente @posts.
Per ora è tutto.
Comincio a rispondermi da solo, ma ogni aggiunta e aiuto è assolutamente
gradita.
Intanto il mio @posts, che in soldoni è un’istanza di
WillPaginate::Collection, sia nel controller sia nella view è rifornito
dei seguenti metodi:
page_count > ritorna @total_pages
offset > titorna il numero di entries pari alla prima-1 della pagina
corrente. In altre parole, se ce ne sono 30 per pagina, la prima della
pagina 2 è la numero 31 e dunque l’offset == 30.
previous_page > ritorna, se c’è, @current_page-1
next_page > ritorna, se c’è, @current_page+1
Lo stesso oggetto è rifornito delle seg. proprietà :
Scusa la domanda, magari � stupida, ma perch� stai facendo un join?
Non basta un has_many/has_one con relativo belongs_to nel modello?
Il giorno 29/nov/07, alle ore 10:07, Cosimo G. ha scritto:
Ciao Giovanni,
in realtà il problema è:
come faccio ad ordinare la tabella alfabeticamente ma in base al campo
della tabella belongs_to( cui appartiene ) ?
purtroppo io sono ancora un principiante in termini di db, vengo da 10
anni di client-side e mi sto affacciano solo ora al lato server, quindi
quando mi parli di join, so cosa vuoi dire ma non ho idea dei motivi del
baco…
Se posso darti un consiglio però, se te la cavi un po’ con l’inglese,
dopo pranzo quando di là si svegliano, fai un giro nel forum ufficiale
di rails.
Senza nulla togliere al nostro, di la normalmente sono di + e c’è +
gente che ti risponde e di solito in fretta.
Devo precisare che li vorrei usare con richieste ajax, will_paginate è
molto comodo perchè crea in automatico nella vista anche la gestione
della paginazione ma purtroppo non è in ajax, anche se lo fosse credo
sarebbe difficile gestire casi specifici o mi sbaglio?
Esempio un form con un button il cui click riempie una div. Ora dovrei
fare che il link della paginazione effettuasse altre chiamate ajax con i
parametri del form. Lo farei semplicemente agganciando il tag a con
prototype e passando il numero della pagina come parametro.
La domanda è sempre la stessa, qualcuno ha già fatto qualcosa del
genere?
Ciao Marco,
Io ho risolto il problema in questo modo:
app/controllers/sources_controller.rb:
class SourcesController < ApplicationController
def index @sources = Source.paginate :page => params[:page], :per_page => 10
respond_to do |format|
format.html # index.html.erb
format.js do
render :update do |page|
page.replace_html 'sources', :partial => 'sources'
end
end
end
end
end
app/views/sources/index.html.erb:
Sources
<%= render :partial => 'sources' %>
app/views/sources/_sources.html.erb:
<%= will_paginate @sources %>
Poi, scarica LowPro, copialo in public/javascripts ed includilo nel tag
head.
Crea un file sources.js e scrivi:
Event.addBehavior.reassignAfterAjax = true;
Event.addBehavior({
‘div.pagination a’ : Remote.Link
});
Fatto! In questo modo se javascript è attivo, i link contenuti nel div
con class pagination, verranno trasformati in Remote.Link, ovvero il
loro ‘onclick’ effettuerà chiamate AJAX. Se javascript è disabilitato,
LowPro non riuscirà in questa operazione, quindi i link si comporteranno
in modo classico, passando il numero di pagina come parametro della get
request.
ES: /sources?p=1
<% content_for :extend_behavior_js do -%>
//-- pagination
‘div.pagination a:click’ : function(e) {
var div_dest = ‘inq_result’
new Ajax.Updater(
div_dest,
this.href,
{
asynchronous:true,
evalScripts:true,
onLoading:function(){
$(div_dest).innerHTML=‘’;
},
parameters:Form.serialize($(‘frm_inquiry’)) + ‘&authenticity_token=’ +
encodeURIComponent(‘217195cdb07d8deabe70098cf5189c20613a0fe5’)
}
);
return false;
}
<% end -%>
Tralasciando il sistema per personalizzare la Event.addBehavior, questo
è il mio sistema “ibrido” e devo dire che funziona
Quello che non ho capito è questo codice:
respond_to do |format|
format.html # index.html.erb
format.js do
render :update do |page|
page.replace_html ‘sources’, :partial => ‘sources’
end
end
end
e neanche questo:
‘div.pagination a’ : Remote.Link