当前位置:  开发笔记 > 后端 > 正文

Rails POST,PUT,GET

如何解决《RailsPOST,PUT,GET》经验,为你挑选了6个好方法。

在我生成一个脚手架后,Rails让我能够POST到items.xml哪个将创建一个新的item.GET items.xml将简单地列出所有.根据我正在执行的操作类型,Rails在哪里指定控制器(createindex分别)中的哪个方法将被调用?

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



1> Matt Grande..:

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


只需输入"rake routes"即可查看内容.
它不是"由REST指定",它只是Rails中的一个约定.REST规范与框架应如何处理请求无关,包括调用哪个方法.

2> John Topley..:

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 :itemsconfig/routes.rb让你的七种方法"免费".您可以通过进入rake routes控制台随时列出应用程序中的所有路径.

有关更多详细信息,请参阅从外部输入的Rails路由.



3> Don Werve..:

了解这一点的最佳位置是路由指南.



4> buddhamagnet..:

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

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

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

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

等等



5> vrish88..:

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

map.resources :items

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

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



6> jshen..:

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

$ rake routes

为了更直接地回答,这是rails使用的约定.在routes.rb中放入类似下面的内容时,可以设置此映射

map.resources :items

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有