Salut à tous,
Je regardais la page 29 des slides de la présentation sur
l’internationalisation à Paris on Rails, et je suis resté coincé sur
l’exemple qui devrait pourtant fonctionner.
Je suis en Rails 1.2.6 et j’ai copié la portion suivante dans mon
fichier de route :
lang_prefix = ‘:language’
map.resource ‘home’, :path_prefix => lang_prefix
map.resource ‘home’
Si je vais dans mon navigateur et que je tape :
/home, params vaut bien {:controller => “home”, :action => “show”}
/fr/home, params vaut bien {:language => “fr”, :controller => “home”,
:action => “show”}
La reconnaissance d’URL fonctionne donc bien.
Par contre, quand je construis l’URL avec une route nommée, ça ne
fonctionne pas.
home_path rend bien “/home”
url_for {:language => “fr”, :controller => “home”, :action => “show”}
rend bien “/fr/home”
mais
home_path(:language => “fr”) ne rend pas “/fr/home” mais
“/home?language=fr” alors que je m’attendais à ce que ça retourne
“/fr/home”
Pourquoi ce dernier exemple ne fonctionne-t-il pas ? Comment
faites-vous pour régler le problème du dernier exemple ?
Ce que j’avais déjà fait, c’est placer un name_prefix à la route qui
comporte le path_prefix. Mais dans ce cas, tout devient plus compliqué
et je pensais pouvoir simplifier tout ça…
Merci d’avance,
yk