Ответ 1
Rails использует 4 стандартных метода (глаголы), а именно:
- GET
- POST
- PUT
- DELETE
Кроме того, он имеет 7 RESTful действий:
- Индекс
- новый
- создать
- изменить
- обновление
- показать
- уничтожить
Rails никогда не использует тот же самый глагол, что и соответствующее действие. Маршрутизация к действию destroy позволяет сделать больше, чем один DELETE, через соответствующее действие в контроллере.
Этот railsguide может вас заинтересовать: http://guides.rubyonrails.org/routing.html
Объяснение
Браузеры запрашивают страницы из Rails, отправляя запрос на URL-адрес с использованием определенного HTTP-метода, такого как GET, POST, PUT и DELETE. Каждый метод - это запрос на выполнение операции над ресурсом. Маршрут ресурса сопоставляет ряд связанных запросов с действиями в одном контроллере.
Теперь представьте, что у нас есть запрос HTTP GET, что означает, что вы хотите читать/извлекать данные. Если действие будет иметь то же имя, что и глагол, GET в этом случае будет слишком упрощенным. GET может предоставлять доступ к показу, индексу, новым или редактировать действия. Все они читают данные, но сами действия, безусловно, не совпадают. То же самое можно сказать и о запросе DELETE. Этот запрос обрабатывается через контроллер и может иметь разные реализации в действиях. Возможно, вы хотите уничтожить сообщение, но это может означать, что вы хотите выйти из своей пользовательской сессии. Только наличие действия с именем delete не будет оправдывать связанные с ним возможности через контроллер.
Изменить
Если вы хотите узнать больше о том, как обрабатываются запросы из браузера, вы можете прочитать некоторую информацию о модели M (odel) V (iew) C (ontroller), которую Rails использует:
http://www.youtube.com/watch?v=3mQjtk2YDkM&noredirect=1
и
http://betterexplained.com/articles/intermediate-rails-understanding-models-views-and-controllers/
Цитата из этой ссылки:
Браузер делает запрос, например http://mysite.com/video/show/15Веб-сервер (mongrel, WEBrick и т.д.) Получает запрос. Он использует маршруты, чтобы узнать, какой контроллер использовать: шаблон маршрута по умолчанию - "/controller/action/id", как определено в config/routes.rb.
Значение вашего первоначального запроса будет переведено и обработано через веб-сервер, а правильный маршрут должен быть определен через контроллер, где находится успокоительное действие, такое как destroy.
В первые дни Rails существовали только 2 глагола, а именно GET и POST (поскольку PUT и DELETE не поддерживаются, а более поздние версии рельсов разрешаются путем добавления PUT и DELETE через скрытые переменные. Имя действия destroy никогда не изменялся, поскольку запрос и действия - это две разные вещи.
Actions || show || create || update || destroy
SQL || select|| create || update || delete
REST || get || post || post || post
Actions || show || create || update || destroy
SQL || select|| create || update || delete
REST || get || post || put || delete
Эта цитата может представлять интерес:
"Поскольку маршрутизатор использует HTTP-глагол и URL-адрес для соответствия входящим запросам, четыре URL-адреса отображают семь разных действий.