Подтвердить что ты не робот

Rails POST, PUT, GET

После создания эшафота Rails дает мне возможность POST на items.xml, который создаст новый item. GET to items.xml будет просто перечислить их все. Где Rails определяет, какой метод в контроллере (create или index, соответственно) будет вызван, в зависимости от типа действия, которое я выполняю?

В частности, POST вызывает методA, но GET для того же метода вызовов URL.B. Где это указано? Где Rails делает определение для вызова метода index контроллера?

4b9b3361

Ответ 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 в консоли.

Ответ 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