Рельсы POST, PUT, GET - PullRequest
       4

Рельсы POST, PUT, GET

55 голосов
/ 22 апреля 2009

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

Точнее, POST вызывает methodA, но GET для того же URL-адреса вызывает methodB. Где это указано? Где Rails решает вызвать метод контроллера index?

Ответы [ 8 ]

89 голосов
/ 22 апреля 2009

Я полагаю, это указано REST . Вот список для тебя:

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 / rout.rb просто добавьте map.resources :items

27 голосов
/ 22 апреля 2009

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

10 голосов
/ 22 апреля 2009

Лучшее место, чтобы узнать об этом было бы Руководство по маршрутизации .

6 голосов
/ 26 апреля 2012

Вы хотели знать, как использовать только POST? Сделайте это, например:

resources :items, :only => [:create]

.. и т.д. Это для Rails 3, кстати, и будет генерировать один ресурс для создания POST. Или, если вам нужно только очень небольшое подмножество набора REST, просто:

match 'items/:id' => "items#create', :via => :post

и т. Д. И т. Д.

5 голосов
/ 22 апреля 2009

Это очень поможет, но это не прямой ответ на ваш вопрос. Следующая команда выведет список отображений, используемых вашим приложением, поэтому вам не нужно запоминать все детали или догадываться

$ rake routes

Чтобы ответить более прямо, это соглашение, которое использует rails. Вы устанавливаете это отображение, когда помещаете что-то вроде следующего в ваши маршруты. Rb

map.resources :items
5 голосов
/ 22 апреля 2009

Как сказал Дон Верв, взгляните на ваш файл rout.rb. Там у вас, вероятно, есть что-то вроде этого:

map.resources :items

Здесь рельсы связывают запросы POST и GET с определенными действиями. Чтобы увидеть, как это работает, посмотрите на ссылки из других ответов. Документы помогают тонну.

Для всех маршрутов и действий, на которые они ссылаются, вы можете ввести rake routes в командную строку, когда вы находитесь в корневом каталоге вашего rails. Это покажет вам все (с точки зрения маршрутизации), что дает вам эшафот.

3 голосов
/ 23 апреля 2009

map.resources - это метод, который автоматически предоставляет вам маршруты REST и помощники по путям. Это хорошая функция, если вы уже знаете и понимаете, как работает спокойная маршрутизация рельсов, но это также является препятствием для изучения рельсов, поскольку слишком много скрыто.

Railsguides имеет хороший путеводитель .

1 голос
/ 25 апреля 2013

Если честно, вы не ошибетесь с документацией по маршрутизации на сайте Rails. Это помогло сделать следующие шаги и выйти за рамки удобства ресурсов (что для большинства приложений хорошо), и действительно закрепить доступные функции маршрутизации.

http://guides.rubyonrails.org/routing.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...