Небольшое дополнение к текущим ответам, мне пришлось потратить часы, чтобы понять это.
Если у вас есть более сложные маршруты, такие как, например, фильтрация в моем случае, убедитесь, что маршруты «более высокого уровня» идут первыми (а не только что они находятся выше RESTful) в противном случае will_paginate подбирает первый пригодный для использования и вставляет дополнительные параметры в конец URL-адреса ненормативным способом.
Так что в моем случае я закончил с этим:
map.connect "wallpapers/:filter/page/:page", :controller => "wallpapers", :action => "index", :requirements => {:page => /\d+/, :filter => /(popular|featured)/ }
map.connect "wallpapers/page/:page", :controller => "wallpapers", :action => "index", :requirements => {:page => /\d+/ }
map.resources :wallpapers
Так что теперь я получаю красивые URL-адреса, такие как: wallpapers / Popular / page / 2 вместо wallpapers / page / 2? Filter = популярный