2009-12-07 6 views
1

J'utilise le plug-in will_paginate.Rails will_paginate routage mise en cache des pages en double

En oder pour générer des itinéraires que je peux mettre en cache (/posts/index/2 au lieu de /posts?page=2) J'ajouté ce qui suit à mon routes.rb:

map.connect '/posts/index/1', :controller => 'redirect', :url => '/posts/' 

map.connect 'posts/index/:page', 
      :controller => 'posts', 
      :action => 'index', 
      :requirements => {:page => /\d+/ }, 
      :page => nil 

La première ligne redirige /posts/index/1 à /posts/ en utilisant un contrôleur de redirection, afin d'éviter avoir une page en double.

Y a-t-il un problème avec la façon dont j'ai configuré la règle 'posts/index/:page'?

Je pensais que l'ajout :requirements => {:page => /\d+/ } garantirait que /post/index/ sans paramètre :page ne devrait pas fonctionner, mais /posts/index.html est la mise en cache.

Comment puis-je rediriger /posts/index/ vers /posts/ pour éviter d'avoir à la fois /posts.html et /posts/index.html?

Merci


MISE À JOUR

J'ai simplement ajouté

map.connect '/posts/index/', :controller => 'redirect', :url => '/posts/' 

Je ne reçois pas les pages en double plus. Toutefois, je ne comprends toujours pas pourquoi je recevais /posts/index.html. Toutes les explications ou suggestions sur la façon de rendre cette règle plus succincte sont les bienvenues;)!

map.connect '/posts/index/1', :controller => 'redirect', :url => '/posts/' 
map.connect '/posts/index/', :controller => 'redirect', :url => '/posts/' 
map.connect 'posts/index/:page', 
      :controller => 'posts', 
      :action => 'index', 
      :requirements => {:page => /\d+/ }, 
      :page => nil 

Répondre

1

Here J'ai trouvé une réponse à votre question.

Je pense que l'ajout :page => nil peut remplacer la condition précédente. Alors peut-être que lorsque vous supprimerez cette partie, cela fonctionnera comme prévu.

+0

Merci, je vais certainement essayer cela et revenir pour mettre à jour ce fil. – deb