[ruby-it] cache_page e parametri aggiuntivi

Marco Borromeo me a ilborro.info
Mer 19 Dic 2007 10:58:05 CET


Un saluto agile a tutti ;-)

Giocando col page caching (aggiungendo caches_page :blabla), mi sono 
accorto di uno strano comportamento di Ror.

Ogni parametro della richiesta viene ignorato, ed il file html statico 
generato è sempre uno e viene sovrascritto.

Ok, non si è capito nulla, faccio un esempio che è più semplice :-)
Premessa, uso will_paginate

URL:
/nome-della-categoria/l/numero-pagina
params[:id]/l/params[:page]  (params[:page] è 'opzionale')

Page caching mi crea sempre un
/nome-della-categoria/l.html
ignorando il parametro :page, o ogni altro parametro che metto dopo page.

Ho "risolto" facendo un piccolo hack nel 
actionpack/lib/action_controller/caching.rb, nella funzione "cache_page"

da
def cache_page(content = nil, options = {})
   return unless perform_caching && caching_allowed
   self.class.cache_page(content || response.body, 
url_for(options.merge(:only_path => true, :skip_relative_url_root => 
true, :format => params[:format])))
end

a
def cache_page(content = nil, options = {})
   return unless perform_caching && caching_allowed
   self.class.cache_page(content || response.body, 
url_for(params.merge(:only_path => true, :skip_relative_url_root => 
true, :format => params[:format])))
end

Ora mi viene generato correttamente il file di cache:
/nome-della-categoria/l.html
/nome-della-categoria/l/1.html
/nome-della-categoria/l/2.html
/nome-della-categoria/l/3.html
/nome-della-categoria/l/4.html
[ecc...]

e non viene sovrascritto in continuazione
/nome-della-categoria/l.html

e funziona anche con altri parametri che aggiungo in coda all'url.

Ora, la domanda è:
sono io che sto sbagliando? mi sono scordato di qualcosa? (il parametro 
:page nel routes.rb è indicato). Troppo caffè? Fette di salame sugli 
occhi? Il framework è bacato? (naaaaa)

Sbirciando in Rails 2.0 ho visto che si fa sempre riferimento a quel 
options, e non a params.

Non mi va di tenere una versione (seppur freezed) hackata, qualcuno mi 
può dare una dritta su come posso uscire da questo intoppo?

cicciput:~# rails -v && ruby -v
Rails 1.2.3
ruby 1.8.5 (2006-08-25) [x86_64-linux]
cicciput:~#

Thanks!

-- 
http://marco-borromeo.com


Maggiori informazioni sulla lista Ml