在我生成脚手架之后,Rails让我能够向items.xml
发送POST请求来创建新的item
。发送GET请求到items.xml
将仅列出它们。Rails在哪里指定了基于我执行的操作类型,将调用控制器中的哪个方法(分别是create
或index
)?
更具体地说,POST调用methodA
,但对同一URL的GET调用将调用methodB
。这是在哪里指定的?Rails在哪里确定将调用控制器的index
方法?
在我生成脚手架之后,Rails让我能够向items.xml
发送POST请求来创建新的item
。发送GET请求到items.xml
将仅列出它们。Rails在哪里指定了基于我执行的操作类型,将调用控制器中的哪个方法(分别是create
或index
)?
更具体地说,POST调用methodA
,但对同一URL的GET调用将调用methodB
。这是在哪里指定的?Rails在哪里确定将调用控制器的index
方法?
我相信这是由REST指定的。以下是一个列表:
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
你想知道如何只使用POST请求吗?可以按照以下步骤操作:
resources :items, :only => [:create]
顺便说一下,这是针对Rails 3的,将生成一个单个资源以进行“POST创建”。或者如果您仅需要REST集的一个非常小的子集,只需:
match 'items/:id' => "items#create', :via => :post
etc etc.
就像Don Werve所说的那样,看一下你的routes.rb文件。在里面,你可能会有这样的内容:
map.resources :items
这是Rails将POST和GET请求链接到特定操作的地方。要了解其工作原理,请查看其他答案中的链接。文档可以帮助很多。
要查看所有路由以及它们链接到的操作,您可以在进入Rails目录根目录时,在命令提示符中键入rake routes
。这将显示一个脚手架提供的所有内容(在路由方面)。
这会有很大帮助,但并不是对你问题的直接回答。下面的命令将列出应用程序使用的映射,因此您不必记住所有详细信息或猜测。
$ rake routes
更直接地回答,这是Rails使用的一种约定。当您在routes.rb中设置以下内容时,您就可以建立这种映射关系。
map.resources :items
map.resources是一种方法,可以自动为您提供REST路由和路径助手。如果您已经知道并理解了Rails的restful路由工作原理,这是一个不错的功能,但对于学习Rails来说也有一定的障碍,因为太多内容被隐藏了。
Railsguides有一个很好的路由指南。