# Routing-filter e rails

**URL:** <https://www.ruby-forum.com/t/routing-filter-e-rails/229445>\
**Category:** IT\
**Created:** [January 3, 2013, 1:06pm UTC](https://www.ruby-forum.com/t/routing-filter-e-rails/229445 "2013-01-03T13:06:00Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![lorenzo\_s](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/eb8c5e/32.png) [@lorenzo\_s](https://www.ruby-forum.com/u/lorenzo_s)\
**Post date:** [January 3, 2013, 1:06pm UTC](https://www.ruby-forum.com/t/routing-filter-e-rails/229445/1 "2013-01-03T13:06:00Z")

</div>

Ciao lista,

sto utilizzando all’interno di un progetto rails routing-filter  
([GitHub - svenfuchs/routing-filter: routing-filter wraps around the complex beast that the Rails routing system is, allowing for unseen flexibility and power in Rails URL recognition and generation.](https://github.com/svenfuchs/routing-filter))  
Sito multi lingua che utilizza high\_voltage.  
Rail mi generava degli orribili “?locale=en”

Ho configurato le mie rotte secondo questo modello:

filter :locale, :exclude =\> /^/admin/  
scope “/(:locale)”, :locale =\> /it|fr/ do

resources :varie  
resources :eventuali

match “#{HighVoltage::content\_path}\*id” =\> ‘high\_voltage/pages#show’,  
:as =\> :page  
end

in questo modo ottengo rotte corrette ma quando la url viene generata  
da qualcosa come resource\_path sono dolori:  
/it/miapagina (quando utilizzo HighVoltage)  
/it/it/varie (quando utilizzo un path generato da una mia risorsa)

di fatto c’ una sovrapposizione tra quello che fa routing-filter e  
quello che rails fa di default quando vede che c’ un locale e lo  
inserisce nella url.  
Con exclude posso evitare /admin e va bene ma per il restante delle  
risorse diventa troppo noioso.

Ho trovato due strade e mi fanno schifo tutte e due:

- RoutingFilter.active = false spengo l’url rewrite in toto. Nelle  
poche pagine HighVoltage faccio a mano
- dentro la gemma RoutingFilter ho inserito una cosa di questo tipo:

…  
prepend\_segment!(result, locale) if prepend\_locale?(locale,url) &&  
!excluded?(url) # \<— AGGIUNTO url come parametro passato a  
prepend\_locale?  
…  
def prepend\_locale?(locale,url)  
locale && (self.class.include\_default\_locale? ||  
!default\_locale?(locale) ) && !url.include?(locale.to\_s) # \<—  
AGGIUNTO l’ultimo include?  
end  
…

Qualcuno ha suggerimenti in merito?  
grazie Lorenzo
