2012-01-15 10 views
5

Próbuję uzyskać pełną internacjonalizację moich tras w aplikacji Rails3.1. Używam już Francesc Pla's rails-translate-routes, aby zlokalizować akcje i zasoby trasy. Ostatnim krokiem jest możliwość przetłumaczenia ślimaków dla niektórych moich modeli.Jaki jest najlepszy sposób tłumienia wtyczek w trasach Railsowych

Szlaku do przetłumaczenia:

http://myhost.com/products/pharmacy --> http://myhost.com/productos/farmacia 

Mam zagnieżdżony trasę formie

# routes.rb 
match 'products/:category_slug' => "products#index" 

Mam modelu Kategoria z instancją #<Category id: 1, slug: "pharmacy"> i zrobić find_by_slug kategorię w moim ProductsController.

Jakieś pomysły na to, jak przetłumaczyć część trasy na :category_slug?

Odpowiedz

0

O ile mi wiadomo, można wywoływać pomocników tłumaczeń bezpośrednio ze sterownika, o ile przestrzeń nazw jest poprawna z I18n.

Więc ProductsController może zawierać coś jak następuje:

class ProductsController < ApplicationController 
    def index 
    i18n_slug = I18n.t("locale.category.#{params[:category_slug]}") 
    @category = Category.find_by_slug(i18n_slug) 
    end 
end 

Powinieneś raczej wziąć pod uwagę jako potencjalnych zagrożeń dla bezpieczeństwa przejeżdżających params bezpośrednio do silnika tłumaczenia, choć nie jestem świadomy żadnych. Możesz także rozważyć przeniesienie go do wcześniejszego filtru lub do kontrolera aplikacji, jeśli będzie on używany w wielu kontrolerach.

Powiązane problemy