Маршрутизация с дополнительным параметром
Я добавил в файл маршрута:
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 и выше. Инверсия двух определений маршрутов устранила проблему (см. Комментарий Алессандро ниже).