2010-02-23 4 views
1

J'ai un site Web où une liste de produits est affichée dans la catégorie show action. Je pagine avec succès avec la gemme will_paginate, et de faire ce travail avec la mise en cache des pages en configurant mes routes like Sean Behan does.rails will_paginate et le tri avec mise en cache de la page

J'aimerais que les utilisateurs trient les produits. Actuellement, j'ai une trouvaille dans mon contrôleur comme ceci:

if params[:sort_by] == "name_desc" 
    #@products = Product.find_with_index("%#{params[:search]}%", :order => 'productname desc').paginate :per_page => 15, :page => params[:page] 
    @products = Product.find_with_index('params[:search]') 
else 
    ... 
end 

Et un lien simple à mon avis:

<%= link_to image_tag("down.gif"), category_path(:sort_by=>"name") %> name<%= link_to image_tag("up.gif"), category_path(:sort_by=>"name_desc") %> 

Mon problème est que je passe ?sort_by=name dans l'URL, qui ne fonctionne pas avec mise en cache des pages. Est-ce que quelqu'un a une idée comment puis-je faire un tri plus intelligent? J'aimerais vraiment continuer et mettre en cache les pages.

Répondre

2

OK, j'ai trouvé un moyen d'obtenir la meilleure mise en cache possible avec ma configuration:

-je encore utiliser cette solution pour travailler la mise en page (comme j'obtenir des URL plus jolies avec elle). Mais j'ai dû passer à la mise en cache des actions pour permettre le passage des paramètres de tri dans l'URL. Consultez cette explication si vous êtes intéressé: http://cobaltedge.com/rails-action-caching-with-query-parameters

Cheers,

Val

Questions connexes