С помощью стандартной механики маршрутизации map.resource
и нескольких вложенных ресурсов результирующие маршруты являются излишне длинными. Рассмотрим следующий маршрут:Могут ли имена контроллеров в маршрутах RESTful быть необязательными?
site.org/users/pavelshved/blogs/blogging-horror/posts/12345
Это легко создать в routes.rb
, и я уверен, что следует какой-то благотворного логики маршрутизации. Но это слишком долго, и похоже, что он не предназначен для чтения человеком.
Хорошее улучшение будет падать имена контроллера, так это выглядит:
site.org/pavelshved/blogging-horror/12345
Ясно, простой, короткий. Это может стать неоднозначным, но в моем случае я не буду называть пользователей «пользователей», например.
Я попытался установить :as => ''
, но он дает такие маршруты: site.org//pavelshved//blogging-horror//12345
при создании их стандартными помощниками.
Есть ли способ сопоставить ресурсы таким образом, что имена контроллеров становятся необязательными?
Означает ли это, что я должен написать эти все маршруты в дополнение к этой красивой схеме, например, map.resources: users do | user | ; user.resources: blogs; end'? –
Да. Названные маршруты - это именно так называемые.Они ожидают увидеть имя контроллера в URL-адресе (в большинстве случаев идентификатор ссылочного объекта тоже). Этот маршрут эффективно говорит «ОК, если вы не можете определить имя контроллера из URL-адреса, и он имеет 3 сегмента, просто отправьте его таким образом и сопоставьте сегменты с этими параметрами». –