with tutorial restful rails elaborando crear con apis ruby-on-rails ruby web-services http

ruby on rails - tutorial - Rieles POST, PUT, GET



ruby restful (8)

Después de generar un andamio, Rails me da la posibilidad de items.xml a items.xml que creará un nuevo item . Un GET a items.xml simplemente los items.xml a todos. ¿Dónde especifica Rails qué método del controlador ( create o index , respectivamente) se llamará, según el tipo de acción que estoy realizando?

Más específicamente, POST llama a methodA pero GET al mismo URL calls methodB. ¿Dónde se especifica esto? ¿Dónde hace Rails la determinación de llamar al método de index del controlador?


¿Quería saber cómo usar POST solo? Haz esto, por ejemplo:

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

..etc. Esto es para Rails 3 por cierto, y generará un único recurso para crear POST. O si solo necesita un subconjunto realmente pequeño del conjunto REST, simplemente:

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

etcétera etcétera.


Como dijo Don Werve, eche un vistazo a su archivo routes.rb. Allí probablemente tengas algo como esto:

map.resources :items

Aquí es donde Rails vincula las solicitudes POST y GET con ciertas acciones. Para ver cómo funciona, mira los enlaces de las otras respuestas. Los documentos ayudan mucho.

Para todas las rutas y las acciones a las que se vinculan, puede escribir rake routes en el símbolo del sistema cuando se encuentre en la raíz del directorio de sus raíles. Esto le mostrará todo (en términos de enrutamiento) que le ofrece un andamio.


Creo que está especificado por REST . Aquí hay una lista para ti:

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

Editado para agregar para obtener todas esas rutas, en config / routes.rb, simplemente agrega map.resources :items



Esto ayudará mucho, pero no es una respuesta directa a su pregunta. El siguiente comando mostrará una lista de las asignaciones que usa su aplicación para que no tenga que recordar todos los detalles o adivinar.

$ rake routes

Para responder más directamente, esta es una convención que usa rails. Establece esta asignación cuando pone algo como lo siguiente en sus rutas.rb

map.resources :items


Para ser honesto, no puedes equivocarte con la documentación de enrutamiento en el sitio web de Rails. Esto ha ayudado a dar los siguientes pasos y ir más allá de la comodidad de los recursos (que para la mayoría de las aplicaciones está bien) y realmente definir las sólidas características de enrutamiento disponibles.

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


Rails define siete métodos de controlador para recursos RESTful por convención. Son:

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

Tenga en cuenta que, como los navegadores web generalmente solo admiten GET y POST, Rails usa un campo oculto para convertirlos en solicitudes PUT y DELETE, según corresponda.

Especificando map.resources :items en config/routes.rb le proporciona esos siete métodos "gratis". Puede enumerar todas las rutas dentro de su aplicación en cualquier momento ingresando rake routes en la consola.


map.resources es un método que automágicamente también te brinda las rutas REST y los ayudantes de ruta. Esta es una buena característica si ya sabes y entiendes cómo funciona el enrutamiento relajante de los rieles, pero también es un obstáculo para aprender raíles porque se oculta demasiado.

Railsguides tiene una buena guía de rutas .