Rails POST,PUT,GET

时间:2009-04-22 17:43:16

标签: ruby-on-rails ruby web-services http

在我生成一个脚手架后,Rails让我能够POST到items.xml,这将创建一个新的item。对items.xml的GET只会将它们全部列出。根据我正在执行的操作类型,Rails在哪里指定控制器中的哪个方法(分别为createindex)?

更具体地说,POST调用methodA但是GET到同一个URL调用methodB。这指定在哪里? Rails在哪里决定调用控制器的index方法?

8 个答案:

答案 0 :(得分:89)

我相信它由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

答案 1 :(得分:27)

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

请注意,由于Web浏览器通常只支持GET和POST,因此Rails会使用隐藏字段将这些请求转换为PUT和DELETE请求。

map.resources :items中指定config/routes.rb可以免费获得这七种方法。您可以随时在控制台中输入rake routes列出应用程序中的所有路径。

答案 2 :(得分:10)

了解这一点的最佳位置是Routing Guide

答案 3 :(得分:6)

您想知道如何仅使用POST吗?这样做,例如:

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

...等。顺便说一下,这适用于Rails 3,并将为POST创建一个单独的资源。或者,如果您只需要一小部分REST集,只需:

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

等等。

答案 4 :(得分:5)

就像Don Werve所说,看一下你的routes.rb文件。在那里你可能有这样的东西:

map.resources :items

这是rails将POST和GET请求链接到某些操作的位置。要了解其工作原理,请查看其他答案中的链接。文档帮助了很多。

当您位于rails目录的根目录中时,对于所有路由以及它们链接到哪些操作,您可以在命令提示符中键入rake routes。这将显示脚手架为您提供的所有内容(就路由而言)。

答案 5 :(得分:5)

这会有很大帮助,但这不是你问题的直接答案。以下命令将列出您的应用程序使用的映射,这样您就不必记住所有细节或猜测。

$ rake routes

为了更直接地回答,这是rails使用的约定。在routes.rb

中添加如下内容时,可以设置此映射
map.resources :items

答案 6 :(得分:3)

map.resources是一种自动为您提供REST路由和路径助手的方法。如果您已经了解并了解rails的restful路由是如何工作的,那么这是一个很好的功能,但它也是学习rails的一个障碍,因为隐藏的太多了。

Railsguides有一个很好的routes guide

答案 7 :(得分:1)

老实说,Rails网站上的路由文档确实不会出错。这有助于采取下一步措施,超越资源的舒适度(大多数应用程序都很好),并确实确定了可用的可靠路由功能。

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