Я пытаюсь создать отдельный маршрут показать маршрут, чтобы использовать маршрутизацию по параметру :id
. Для этого я создал маршрут ресурсов без показа маршрута, а также отдельное шоу маршрута:Rails 5 переименовать имя ресурса ресурса
resource :test, except: [:show]
get 'test/*id', to: 'test#show', as: :test
проблема заключается в том, что я получаю ошибку: You may have defined two routes with the same name using the
: в option, or you may be overriding a route already defined by a resource with the same naming.
Если удалить as: :test
это работает. rails routes
показывает:
tests POST /tests(.:format)
new_test GET /tests/new(.:format)
edit_test GET /tests/:id/edit(.:format)
test PATCH /tests/:id(.:format) <-- WHY??
DELETE /tests/:id(.:format)
GET /tests/*id(.:format)
, как вы можете видеть, resources
переименован в PATCH
маршрут :test
. Если я удалю этот маршрут, маршрут DELETE
называется test
и т. Д. Как я могу остановить resources
с использованием имени маршрута test
? Я не могу переместить мой маршрут globbing над блоком resource
, очевидно, потому что тогда все другие маршруты тоже замаскированы.
Что я хочу:
tests POST /tests(.:format)
new_test GET /tests/new(.:format)
edit_test GET /tests/:id/edit(.:format)
PATCH /tests/:id(.:format)
DELETE /tests/:id(.:format)
test GET /tests/*id(.:format)
Итак, если разрешено использовать одно и то же имя маршрута на маршрутах с разными глаголами, почему я получаю эту ошибку? Нет другого маршрута с именем 'test' с глаголом' GET'. –
Я принимаю этот ответ как правильный, потому что я не знал, что имя пути используется для нескольких глаголов одновременно. Таким образом, мне не нужно называть мой маршрут 'as:: test', потому что он уже назван тестом. –
@ EikeCochu, что вы делаете, когда получаете эту ошибку? Как вы пытаетесь его использовать? – piton4eg