Lokalizacja, paginacja i cache-owanie

Założenia:

  • ruby 1.9.3
  • rails 3.2.7
  • wyniki akcji index ma być stronicowany
  • adresy mają być lokalizowane
  • wyniki akcji index oraz show mają być cache-owane przez caches_page

Na potrzeby stronicowania wykorzystałem will_paginate - działa
Na potrzeby tłumaczenia adresów wykorzystałem rails-translate-routes - działa
Cache-owanie w zasadzie działa ale … stronicowanie dodaje parametr page, powstaje url w postaci /kategorie?page=2 i cachowanie już tego nie łapie. Rozwiązaniem problemu może być gem routing-filter. Niestety filtrowanie routingu nie działa w połączeniu z tłumaczeniem adresów.

Problem 1.
W jaki sposób pogodzić tłumaczenie adresów z filtrowaniem?

[code=ruby]# config/route.rb
Sor::Application.routes.draw do
filter :pagination

resources :categories

inne definicje

end

ActionDispatch::Routing::Translator.translate_from_file(I18n.available_locales.map { |locale| “config/locales/#{locale}/routes.yml” },
{ :prefix_on_default_locale => false, :keep_untranslated_routes => false })[/code]
Problem 2.
Skoro filtrowanie nie działa to można samodzielnie tworzyć definicje uwzględniające stronicowanie np.

[code=ruby]# config/route.rb
Sor::Application.routes.draw do

filter :pagination

get “categories(/page/:page)” => “categories#index”, :as=>:categories
resources :categories, :except=>[:index]

inne definicje

end

ActionDispatch::Routing::Translator.translate_from_file(I18n.available_locales.map { |locale| “config/locales/#{locale}/routes.yml” },
{ :prefix_on_default_locale => false, :keep_untranslated_routes => false })[/code]
Niestety to również nie działa poprawnie gdyż elementy znajdujące się w nawiasie nie są tłumaczone i otrzymuję url w postaci /kategorie/page/2

W jaki sposób zrealizować założenia? Może jakieś inne gemy?

https://github.com/amatsuda/kaminari#creating-friendly-urls-and-caching. to co prawda dla kaminari, ale z will_paginate też powinno działać