Perché le rotte con un punto in un parametro non corrispondono?

Ho un percorso per i miei utenti come /iGEL/contributions , che funziona bene. Ma ora un utente registrato con un nome come “A. e.B.”, e ora la rotta non riesce a corrispondere, dal momento che il nome contiene punti.

Il mio percorso:

 get "/:user/contributions" => 'users#contributions' 

Qualche idea?

Vedi la casella di informazioni blu qui :

Per default i segmenti dinamici non accettano i punti – questo perché il punto viene usato come separatore per i percorsi formattati. Se è necessario utilizzare un punto all’interno di un segmento dinamico, aggiungere un vincolo che lo sovrascrive, ad esempio :id => /[^\/]+/ consente qualsiasi cosa tranne una barra.

Questo per esempio sarebbe:

 get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ } 

Se il tuo segmento variabile è l’ultimo, anche l’ [^\/] regex mangerà il formato. In tal caso, usa piuttosto:

 /([^\/]+?)(?=\.json|\.html|$|\/)/