English dictionary with notifications so you won't forget what you're studying!
Click here for more info about the app
The app that quizzes and scores you on your vocabulary!
Click here for more info about the app

How to Use Pretty URLs with Rails will_paginate Plugin


The will_paginate plugin for Rails uses a key/value assignment like ?page=2, rather than the pretty url formats such as /page/2 ... This is because url generation and mapping are handled by the routes.rb file. You'll need to modify the file so that rails knows what to do with request that match the pattern. Make sure to put the custom (map.connect) route before the normal restful routes (map.resources)

map.connect '/topics/:id/page/:page', :controller => 'topics', :action => 'show'
map.resources :topics

Internally will_paginate uses the url_for method so Rails will now know how to construct your urls in a pretty way. I got most of this info from this discusson http://groups.google.com/group/will_paginate/browse_thread/thread/d0142b512cfca9d5?pli=1

There is nothing wrong leaving the default behavior alone and looking at the 'ugly' key/value pairs in the address bar. However, if you take advantage of page caching in rails, you'll need to do this anyway. Page caching in rails ignore extra parameters, any info before/after the "?" and "&" symbols. There will be no difference from /topics/2?page=1 and /topics/2?page=100 in your cache. And since most likely the content will be very different on these two pages, you'll need to have pretty urls so that page caching will save topics/2/page/1.html and topics/2/page/100.html as two different resources!

Tagged w/ #caching #routes #urlsruby on rails