Rails POST, PUT, GET
After I generate a scaffold, Rails gives me the ability to POST to items.xml
which will create a new item
. A GET to items.xml
will simply list them all. Where does Rails specify which method in the controller ( create
or index
, respectively) will be called, based on the type of action I am performing?
More specifically, POST calls methodA but GET to the same URL calls methodB. Where is this specified? Where does Rails make the determination to call the index
method of the controller?
I believe it's specified by REST. Here's a list for 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
Edited to add to get all those routes, in config/routes.rb, simply add map.resources :items
Rails defines seven controller methods for RESTful resources by convention. They are:
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
Note that because web browsers generally only support GET and POST, Rails uses a hidden field to turn these into PUT and DELETE requests as appropriate.
Specifying map.resources :items
in config/routes.rb
gets you those seven methods "for free". You can list all the routes within your application at any time by entering rake routes
in the console.
了解这个最好的地方是路由指南。
链接地址: http://www.djcxy.com/p/41004.html上一篇: 如何在jQuery中发送PUT / DELETE请求?
下一篇: Rails POST,PUT,GET