Rails POST, PUT, GET
После создания эшафота Rails дает мне возможность POST на items.xml
, который создаст новый item
. GET to items.xml
будет просто перечислить их все. Где Rails определяет, какой метод в контроллере (create
или index
, соответственно) будет вызван, в зависимости от типа действия, которое я выполняю?
В частности, POST вызывает методA, но GET для того же метода вызовов URL.B. Где это указано? Где Rails делает определение для вызова метода index
контроллера?
Ответы
Ответ 1
Я считаю, что он указан REST. Здесь список для ya:
GET /items #=> index
GET /items/1 #=> show
GET /items/new #=> new
GET /items/1/edit #=> edit
PUT /items/1 #=> update
POST /items #=> create
DELETE /items/1 #=> destroy
Отредактировано для добавления, чтобы получить все эти маршруты, в config/routes.rb просто добавьте map.resources :items
Ответ 2
Rails определяет семь методов контроллера для ресурсов RESTful по соглашению. Это:
Action HTTP Method Purpose
-------------------------------------------------------------------------
index GET Displays a collection of resources
show GET Displays a single resource
new GET Displays a form for creating a new resource
create POST Creates a new resource (new submits to this)
edit GET Displays a form for editing an existing resource
update PUT Updates an existing resource (edit submits to this)
destroy DELETE Destroys a single resource
Обратите внимание, что, поскольку веб-браузеры обычно поддерживают только GET и POST, Rails использует скрытое поле, чтобы превратить их в запросы PUT и DELETE, если это необходимо.
Задание map.resources :items
в config/routes.rb
получает эти семь методов "бесплатно". Вы можете в любой момент перечислить все маршруты в своем приложении, введя rake routes
в консоли.
Ответ 3
Лучшее место, чтобы узнать об этом, будет Руководство по маршрутизации.
Ответ 4
Вы хотите знать, как использовать только POST? Сделайте это, например:
resources :items, :only => [:create]
.. и т.д. Это для Rails 3, кстати, и создаст единый ресурс для создания POST. Или, если вам нужен только небольшой набор из набора REST, просто:
match 'items/:id' => "items#create', :via => :post
и т.д.
Ответ 5
Как сказал Дон Вервер, взгляните на файл routes.rb. Там у вас есть что-то вроде этого:
map.resources :items
Здесь рельсы связывают POST и GET запросы с определенными действиями. Чтобы увидеть, как это работает, посмотрите ссылки из других ответов. Документы помогают тонну.
Во всех маршрутах и действиях, которые они связывают с вами, вы можете ввести rake routes
в командную строку, когда находитесь в корне вашей директории rails. Это покажет вам все (с точки зрения маршрутизации), которое дает вам эшафот.
Ответ 6
Это поможет много, но это не прямой ответ на ваш вопрос. Следующая команда отобразит сопоставления, используемые вашим приложением, поэтому вам не нужно запоминать все детали или угадывать.
$ rake routes
Чтобы ответить более непосредственно, это соглашение, которое использует рельсы. Вы устанавливаете это отображение, когда в своих маршрутах вы помещаете что-то вроде следующего. Rb
map.resources :items
Ответ 7
map.resources - это метод, который автоматически предоставляет вам маршруты REST и помощники пути. Это приятная функция, если вы уже знаете и понимаете, как работает спокойная маршрутизация рельсов, но это также является препятствием для изучения рельсов, потому что слишком много скрыто.
Railsguides имеет приятный маршрут.
Ответ 8
Если честно, вы не можете ошибиться в документации по маршрутизации на веб-сайте Rails. Это помогло сделать следующие шаги и выйти за пределы возможностей ресурсов (что для большинства приложений в порядке) и действительно прибить надежные функции маршрутизации.
http://guides.rubyonrails.org/routing.html