Этот маршрут требует наличия всех трех параметров:
match '/entries/new/:year/:month/:day' => 'entries#new'
Только с этим маршрутом GET /entries/new
приведет к:
No route matches "/entries/new"
Вы можете перенаправить из routes.rb
следующим образом:
match '/entries' => 'entries#index'
match '/entries/new/:year/:month/:day' => 'entries#new'
match "/entries/new/(*other)" => redirect('/entries')
Вторая строка соответствует путям, где присутствуют все три параметра. Третья строка соответствует всем остальным случаям /entries/new
с использованием «маршрутизации» и выполняет перенаправление. Запросы, соответствующие третьей строке, не попадут на EntriesController#new
.
Примечание: вам может не понадобиться первая строка, если вы уже определили маршрут к EntriesController#index
- но следите за resources :entries
, который переопределит index
и new
.
Дополнительную информацию можно найти в руководстве Rails Маршрутизация извне . При использовании параметров даты, ограничения являются хорошей идеей (Раздел 4.2)