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
El mejor lugar para aprender sobre esto sería la Guía de enrutamiento .
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.
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.
- Consulte Rails Routing from the Outside In para obtener más detalles.
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 .