Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Обновление

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