У меня есть следующие маршруты, установленные в файле routes.rb:
resources :people do
collection do
get :search
end
end
Когда я выполняю действие на URL-адресе: http://localhost:3000/people/search.json?term=stepeb, сервер сообщает, что он отвечает действием show, с правильным параметром термина, но также имеет параметр id, установленный в "поиск".
Проблема, как я вижу, - это два URL-адреса URL-адрес шоу:
/people/:id
и я считаю, что маршрутизатор соответствует этому маршруту до того, как он попадет в /people/search
Если это так, как будут работать маршруты на основе коллекции? Неужели они все поймают действие шоу?
Соответствующая часть маршрутов рейка выглядит следующим образом:
search_people GET /people/search(.:format) {:action=>"search", :controller=>"people"}
GET /people(.:format) {:action=>"index", :controller=>"people"}
people POST /people(.:format) {:action=>"create", :controller=>"people"}
new_person GET /people/new(.:format) {:action=>"new", :controller=>"people"}
GET /people/:id(.:format) {:action=>"show", :controller=>"people"}
PUT /people/:id(.:format) {:action=>"update", :controller=>"people"}
person DELETE /people/:id(.:format) {:action=>"destroy", :controller=>"people"}
edit_person GET /people/:id/edit(.:format) {:action=>"edit", :controller=>"people"}