2010-10-18 4 views
0

Почему в Rails 3 вам нужно расколоть match ':controller(/:action(/:id(.:format)))' (как видно из этого Hello World article), чтобы вызвать метод индекса контроллера приветствия, когда вы перейдете на http://localhost:3000/hello? Может кто-нибудь объяснить, почему мы должны делать это в Rails 3, но не Rails 2, и это нормально для Rails 3 или это какой-то взлом?Rails 3 Routing Question

ответ

4

Это конкретное совпадение является своего рода уловкой для любых запросов, которые еще не определены.

В идеале вы должны использовать Resource Routing, но этот сокет все еще существует как устаревшая поддержка.

По умолчанию он закомментирован, поскольку Rails предполагает, что если пользователь пытается получить доступ к маршруту, который вы явно не определяете, он должен вызвать ошибку 404 вместо ошибки 500, что и произойдет, если я попытаюсь доступ http://localhost:3000/hello с включенным соглашением, потому что нет контроллера «hello».

+0

Есть ли какая-то опасность или дыра в безопасности, какой-то унаследованный маршрут? – Nitrodist