2010-01-12 7 views
0

со следующими маршрутами Я стараюсь достичь цели, чтобы представить статические ресурсы, такие как условия использования, отпечаток и т. Д. На разных языках, используя разные URL-адреса.Маршрутизация Rails с требованиями

я определил два примера маршрутов для моего отпечатком подобное:

map.imprint ':lang/impressum', :controller => "statics", :action => "imprint", :requirements => {:lang => /de/} 
map.imprint ':lang/imprint', :controller => "statics", :action => "imprint", :requirements => {:lang => /en/} 

Теперь на мой взгляд, я стараюсь использовать вспомогательный путь/URL подобное:

<%= link_to(t(statics.imprint.linkname), imprint_url(:lang => session[language])) %> 

где сессия [: язык] - это «de» или «en».

В результате получается рабочая ссылка для маршрута. Но английский терпит неудачу. Если я изменю порядок маршрутов, это наоборот, и английский работает, а немецкий - неудачно.

Ошибка всегда читает так:

imprint_url failed to generate from {:controller=>"statics", :lang=>"de", :action=>"imprint"}, expected: {:controller=>"statics", :action=>"imprint"}, diff: {:lang=>"de"} 

Может кто-нибудь помочь с этим?

Спасибо. Jason

ответ

2

Насколько я знаю, вы не можете сопоставить два маршрута с тем же именем.

Вы должны переименовать один из них, то есть
map.impressum
map.imprint

Когда Rails смотрит маршрут, он остановится на первой, что она находит, что почему ваш " de 'работают.

+0

... похоже. Hoped, что: требования будут отбрасывать «неправильный» маршрут, чтобы можно было выбрать следующий. Очевидно нет. Спасибо, это мне помогло. –

+0

@ Джейсон Мне жаль, что это было так. Я фактически сделал то же самое предположение пару недель назад. Rails умный, но не тот умный;) –

Смежные вопросы