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?