Маршрутизация с необязательным параметром

я добавил в файл маршруту:

map.show_book "/show_book/:name/year/:year", :controller => "book", :action => "show_version"

я добавил:

map.show_book "/show_book/:name", :controller => "book", :action => "show_version"

показать последнюю книгу без указания года.

но он не работает, он не может найти маршрут в "show_book/NAME", если я не пройду год.

У вас есть идеи, почему это не работает ?

спасибо !

PS. Я знаю, что могу использовать год в качестве параметра с "?year=XXXX", но я хочу использовать год как часть URL

1 ответов


поместите необязательные части между скобками:

map.show_book "/show_book/:name(/year/:year)", :controller => "book", :action => "show_version"

и удалите второй маршрут.

обновление

вышеуказанный ответ только для рельсов 3 и выше. Инвертирование двух определений маршрутов исправило проблему (см. комментарий Алессандро ниже).